diff --git a/.gitignore b/.gitignore deleted file mode 100644 index c14ecc8..0000000 --- a/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -target/ -.DS_Store -.idea/ -.iml - -# spark-testing-base runtime files -derby.log - -# Ensime -.ensime* - -bin/.coursier -bin/.scalafmt-* - diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/.scalafmt.conf b/.scalafmt.conf deleted file mode 100644 index cce2891..0000000 --- a/.scalafmt.conf +++ /dev/null @@ -1,18 +0,0 @@ -# Apply to select versioned file -project.git = true - -# Styles -style = defaultWithAlign -maxColumn = 100 -docstrings = JavaDoc -assumeStandardLibraryStripMargin = true -optIn.breakChainOnFirstMethodDot = true -align.openParenCallSite = false -align.openParenDefnSite = false -runner.optimizer.forceConfigStyleMinArgCount = 4 - -# Rewrite rules -rewrite.rules = [ - RedundantBraces, - RedundantParens -] diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9539e82..0000000 --- a/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: scala -sudo: false - -scala: - - 2.11.8 - -jdk: oraclejdk8 - -script: - - bin/scalafmt --test - - sbt ++$TRAVIS_SCALA_VERSION test - -before_cache: - # See http://www.scala-sbt.org/0.13/docs/Travis-CI-with-sbt.html - - find $HOME/.sbt -name "*.lock" | xargs rm - - find $HOME/.ivy2 -name "ivydata-*.properties" | xargs rm - -cache: - directories: - - $HOME/.ivy2/cache - - $HOME/.sbt/boot - - $HOME/.coursier diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index b8f8a7d..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,23 +0,0 @@ -# Contributing - -Bugs and feature requests should be reported in the [GitHub issue -tracker](https://github.com/mediative/amadou/issues/new) and -answer the following questions: - - - Motivation: Why should this be addressed? What is the purpose? - - Input: What are the pre-conditions? - - Output: What is the expected outcome after the issue has been addressed? - - Test: How can the results listed in the "Output" be QA'ed? - -For code contributions, these are the suggested steps: - - - Identify the change you'd like to make, e.g. fix a bug or add a feature. - Larger contributions should always begin with [first creating an - issue](https://github.com/mediative/amadou/issues/new) to ensure - that the change is properly scoped. - - Fork the repository on GitHub. - - Develop your change on a feature branch. - - Write tests to validate your change works as expected. - - Create a pull request. - - Address any issues raised during the code review. - - Once you get a "+1" on the pull request, the change can be merged. diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d645695..0000000 --- a/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md deleted file mode 100644 index 3fdb4f4..0000000 --- a/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# Amadou - Ignite your Spark ETL jobs -[![Build Status]][Travis] -[![Latest version]][Bintray] - - [Build Status]: https://travis-ci.org/mediative/amadou.svg?branch=master - [Travis]: https://travis-ci.org/mediative/amadou - [Latest version]: https://api.bintray.com/packages/mediative/maven/amadou-core/images/download.svg - [Bintray]: https://bintray.com/mediative/maven/amadou-core/_latestVersion - -> Amadou was a precious resource to ancient people, allowing them to start a -> fire by catching sparks from flint struck against iron pyrites. -> -- [Wikipedia] - - [Wikipedia]: https://en.wikipedia.org/wiki/Amadou - -## Getting Started - -Add the following to your `build.sbt`: - -```sbt -resolvers += Resolver.bintrayRepo("mediative", "maven") -libraryDependencies += "com.mediative" %% "amadou-core" % "0.4.4" -``` - -See the [TestEtl] job to get an idea of what the library provides. - - [TestEtl]: core/src/test/scala/com.mediative.amadou/test/TestEtl.scala - -## Documentation - - - [Scaladoc](https://mediative.github.io/amadou/api/#com.mediative.amadou.package) - -## Building and Testing - -This library is built with sbt, which needs to be installed. Run the following command from the project root, to build and run all test: - - $ sbt test - -See [CONTRIBUTING.md](CONTRIBUTING.md) for how to contribute. - -## Releasing - -To release version `x.y.z` run: - - $ sbt -Dversion=x.y.z release - -This will run the tests, create a tag and publishing JARs and API docs. - -## License - -Copyright 2017 Mediative - -Licensed under the Apache License, Version 2.0. See LICENSE file for terms and -conditions for use, reproduction, and distribution. diff --git a/api/com/mediative/amadou/ConfigLoader.html b/api/com/mediative/amadou/ConfigLoader.html new file mode 100644 index 0000000..3d929ab --- /dev/null +++ b/api/com/mediative/amadou/ConfigLoader.html @@ -0,0 +1,1088 @@ + + + + ConfigLoader - com.mediative.amadou.ConfigLoader + + + + + + + + + + + + + + + +
+ Trait +

com.mediative.amadou

+

ConfigLoader

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + trait + + + ConfigLoader extends ArbitraryTypeReader with FicusInstances + +

+ +

Mixin for loading and injecting values from configuration files. +

Source
ConfigLoader.scala
+ Linear Supertypes +
FicusInstances, LocalDateReader, PeriodReader, ISOZonedDateTimeReader, BigNumberReaders, ConfigValueReader, TryReader, DurationReaders, ConfigReader, CollectionReaders, OptionReader, SymbolReader, StringReader, AnyValReaders, ArbitraryTypeReader, AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. ConfigLoader
  2. FicusInstances
  3. LocalDateReader
  4. PeriodReader
  5. ISOZonedDateTimeReader
  6. BigNumberReaders
  7. ConfigValueReader
  8. TryReader
  9. DurationReaders
  10. ConfigReader
  11. CollectionReaders
  12. OptionReader
  13. SymbolReader
  14. StringReader
  15. AnyValReaders
  16. ArbitraryTypeReader
  17. AnyRef
  18. Any
  19. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ConfigLoader to + any2stringadd[ConfigLoader] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (ConfigLoader, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ConfigLoader to + ArrowAssoc[ConfigLoader] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + implicit macro + def + + + arbitraryTypeValueReader[T]: ValueReader[T] + +

    + + Permalink + + +
    Definition Classes
    ArbitraryTypeReader
    +
  7. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  8. + + +

    + + implicit + val + + + bigDecimalReader: ValueReader[BigDecimal] + +

    + + Permalink + + +
    Definition Classes
    BigNumberReaders
    +
  9. + + +

    + + implicit + val + + + bigIntReader: ValueReader[BigInt] + +

    + + Permalink + + +
    Definition Classes
    BigNumberReaders
    +
  10. + + +

    + + implicit + val + + + booleanValueReader: ValueReader[Boolean] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  11. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  12. + + +

    + + implicit + val + + + configValueReader: ValueReader[typesafe.config.Config] + +

    + + Permalink + + +
    Definition Classes
    ConfigReader
    +
  13. + + +

    + + implicit + val + + + configValueValueReader: ValueReader[ConfigValue] + +

    + + Permalink + + +
    Definition Classes
    ConfigValueReader
    +
  14. + + +

    + + implicit + val + + + doubleValueReader: ValueReader[Double] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  15. + + +

    + + + def + + + ensuring(cond: (ConfigLoader) ⇒ Boolean, msg: ⇒ Any): ConfigLoader + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ConfigLoader to + Ensuring[ConfigLoader] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  16. + + +

    + + + def + + + ensuring(cond: (ConfigLoader) ⇒ Boolean): ConfigLoader + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ConfigLoader to + Ensuring[ConfigLoader] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  17. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): ConfigLoader + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ConfigLoader to + Ensuring[ConfigLoader] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  18. + + +

    + + + def + + + ensuring(cond: Boolean): ConfigLoader + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ConfigLoader to + Ensuring[ConfigLoader] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  19. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  21. + + +

    + + implicit + val + + + ficusConfigValueReader: ValueReader[FicusConfig] + +

    + + Permalink + + +
    Definition Classes
    ConfigReader
    +
  22. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  23. + + +

    + + implicit + def + + + finiteDurationReader: ValueReader[FiniteDuration] + +

    + + Permalink + + +
    Definition Classes
    DurationReaders
    +
  24. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ConfigLoader to + StringFormat[ConfigLoader] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  25. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  26. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  27. + + +

    + + implicit + val + + + intValueReader: ValueReader[Int] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  28. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  29. + + +

    + + implicit + val + + + isoZonedDateTimeReader: ValueReader[ZonedDateTime] + +

    + + Permalink + + +
    Definition Classes
    ISOZonedDateTimeReader
    +
  30. + + +

    + + implicit + val + + + localDateReader: ValueReader[LocalDate] + +

    + + Permalink + + +
    Definition Classes
    LocalDateReader
    +
  31. + + +

    + + implicit + val + + + longValueReader: ValueReader[Long] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  32. + + +

    + + implicit + def + + + mapValueReader[A](implicit entryReader: ValueReader[A]): ValueReader[Map[String, A]] + +

    + + Permalink + + +
    Definition Classes
    CollectionReaders
    +
  33. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  34. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  35. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  36. + + +

    + + implicit + def + + + optionValueReader[A](implicit valueReader: ValueReader[A]): ValueReader[Option[A]] + +

    + + Permalink + + +
    Definition Classes
    OptionReader
    +
  37. + + +

    + + implicit + val + + + periodReader: ValueReader[Period] + +

    + + Permalink + + +
    Definition Classes
    PeriodReader
    +
  38. + + +

    + + implicit + val + + + propertiesValueReader: ValueReader[Properties] + +

    + + Permalink + + +

    Value reader for optionally loading properties from a file.

    Value reader for optionally loading properties from a file.

    When the named path does not exists an empty Properties instance is returned +

    Example: +
    1. case class Database(url: String, properties: Properties)
    +
    +
  39. + + +

    + + implicit + val + + + stringValueReader: ValueReader[String] + +

    + + Permalink + + +
    Definition Classes
    StringReader
    +
  40. + + +

    + + implicit + val + + + symbolValueReader: ValueReader[Symbol] + +

    + + Permalink + + +
    Definition Classes
    SymbolReader
    +
  41. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  42. + + +

    + + implicit + def + + + toFicusConfig(config: Config): FicusConfig + +

    + + Permalink + + + +
  43. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  44. + + +

    + + implicit + def + + + traversableReader[C[_], A](implicit entryReader: ValueReader[A], cbf: CanBuildFrom[Nothing, A, C[A]]): ValueReader[C[A]] + +

    + + Permalink + + +
    Definition Classes
    CollectionReaders
    +
  45. + + +

    + + implicit + def + + + tryValueReader[A](implicit valueReader: ValueReader[A]): ValueReader[Try[A]] + +

    + + Permalink + + +
    Definition Classes
    TryReader
    +
  46. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  47. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  48. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  49. + + +

    + + + def + + + [B](y: B): (ConfigLoader, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ConfigLoader to + ArrowAssoc[ConfigLoader] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from FicusInstances

+
+

Inherited from LocalDateReader

+
+

Inherited from PeriodReader

+
+

Inherited from ISOZonedDateTimeReader

+
+

Inherited from BigNumberReaders

+
+

Inherited from ConfigValueReader

+
+

Inherited from TryReader

+
+

Inherited from DurationReaders

+
+

Inherited from ConfigReader

+
+

Inherited from CollectionReaders

+
+

Inherited from OptionReader

+
+

Inherited from SymbolReader

+
+

Inherited from StringReader

+
+

Inherited from AnyValReaders

+
+

Inherited from ArbitraryTypeReader

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + ConfigLoader to any2stringadd[ConfigLoader] +

+
+

Inherited by implicit conversion StringFormat from + ConfigLoader to StringFormat[ConfigLoader] +

+
+

Inherited by implicit conversion Ensuring from + ConfigLoader to Ensuring[ConfigLoader] +

+
+

Inherited by implicit conversion ArrowAssoc from + ConfigLoader to ArrowAssoc[ConfigLoader] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/DatabaseUtils$.html b/api/com/mediative/amadou/DatabaseUtils$.html new file mode 100644 index 0000000..23d2140 --- /dev/null +++ b/api/com/mediative/amadou/DatabaseUtils$.html @@ -0,0 +1,520 @@ + + + + DatabaseUtils - com.mediative.amadou.DatabaseUtils + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou

+

DatabaseUtils

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + object + + + DatabaseUtils extends Logging + +

+ +
Source
DatabaseUtils.scala
+ Linear Supertypes +
Logging, LazyLogging, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. DatabaseUtils
  2. Logging
  3. LazyLogging
  4. AnyRef
  5. Any
  6. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + + lazy val + + + logger: Logger + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    LazyLogging
    +
  13. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + + def + + + runScripts(url: String, properties: Properties, scripts: String*): Unit + +

    + + Permalink + + +

    Run a sequence of database scripts.

    +
  17. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  18. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  21. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Logging

+
+

Inherited from LazyLogging

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/DateInterval$.html b/api/com/mediative/amadou/DateInterval$.html new file mode 100644 index 0000000..389b795 --- /dev/null +++ b/api/com/mediative/amadou/DateInterval$.html @@ -0,0 +1,501 @@ + + + + DateInterval - com.mediative.amadou.DateInterval + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou

+

DateInterval

+ Related Docs: + class DateInterval + | package amadou +

+ + Permalink + + +
+ +

+ + + object + + + DateInterval + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. DateInterval
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + val + + + UTC: TimeZone + +

    + + Permalink + + + +
  5. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  7. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  8. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  9. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  10. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  13. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/DateInterval.html b/api/com/mediative/amadou/DateInterval.html new file mode 100644 index 0000000..174084d --- /dev/null +++ b/api/com/mediative/amadou/DateInterval.html @@ -0,0 +1,1166 @@ + + + + DateInterval - com.mediative.amadou.DateInterval + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou

+

DateInterval

+ Related Docs: + object DateInterval + | package amadou +

+ + Permalink + + +
+ +

+ + sealed abstract + class + + + DateInterval extends Ordered[DateInterval] + +

+ +

Base class for date intervals.

The interval is represented as the half open range between from and to. +For instance, May 2014 is represented as from = 2014-05-01, to = 2014-06-01.

Example:

scala> Seq(Day(2016, 8, 11), Week(2016, 32), Month(2016, 8), Quarter(2016, Quarter.Q3), Year(2016))
+res1: Seq[DateInterval] = List(2016-08-11, 2016-W32, 2016-08, 2016-Q3, 2016)
Source
DateInterval.scala
+ Linear Supertypes +
Ordered[DateInterval], Comparable[DateInterval], AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. DateInterval
  2. Ordered
  3. Comparable
  4. AnyRef
  5. Any
  6. +
+
+ Implicitly
+
+
  1. by orderingToOrdered
  2. by any2stringadd
  3. by StringFormat
  4. by Ensuring
  5. by ArrowAssoc
  6. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(delta: Int): DateInterval + +

    + + Permalink + + + +
  4. + + +

    + + + def + + + -(delta: Int): DateInterval + +

    + + Permalink + + + +
  5. + + +

    + + + def + + + ->[B](y: B): (DateInterval, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + ArrowAssoc[DateInterval] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  6. + + +

    + + + def + + + <(that: DateInterval): Boolean + +

    + + Permalink + + +
    Definition Classes
    Ordered
    +
  7. + + +

    + + + def + + + <=(that: DateInterval): Boolean + +

    + + Permalink + + +
    Definition Classes
    Ordered
    +
  8. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  9. + + +

    + + + def + + + >(that: DateInterval): Boolean + +

    + + Permalink + + +
    Definition Classes
    Ordered
    +
  10. + + +

    + + + def + + + >=(that: DateInterval): Boolean + +

    + + Permalink + + +
    Definition Classes
    Ordered
    +
  11. + + +

    + + + def + + + asDate: Date + +

    + + Permalink + + + +
  12. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  13. + + +

    + + + def + + + asTimestamp: Timestamp + +

    + + Permalink + + + +
  14. + + +

    + + + def + + + by(interval: DateIntervalType): Traversable[DateInterval] + +

    + + Permalink + + +

    Iterate over all days in this date interval.

    Iterate over all days in this date interval.

    Example:

    scala> Week(2016, 11).by(Day).size
    +res1: Int = 7
    +scala> Week(2016, 11).by(Day).toList
    +res2: List[DateInterval] = List(2016-03-14, 2016-03-15, 2016-03-16, 2016-03-17, 2016-03-18, 2016-03-19, 2016-03-20)
    +
  15. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  16. + + +

    + + + def + + + compare(that: DateInterval): Int + +

    + + Permalink + + +
    Definition Classes
    DateInterval → Ordered
    +
  17. + + +

    + + + def + + + compareTo(that: DateInterval): Int + +

    + + Permalink + + +
    Definition Classes
    Ordered → Comparable
    +
  18. + + +

    + + + def + + + contains(date: DateInterval): Boolean + +

    + + Permalink + + + +
  19. + + +

    + + + def + + + end: DateInterval + +

    + + Permalink + + + +
  20. + + +

    + + + def + + + ensuring(cond: (DateInterval) ⇒ Boolean, msg: ⇒ Any): DateInterval + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ensuring[DateInterval] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  21. + + +

    + + + def + + + ensuring(cond: (DateInterval) ⇒ Boolean): DateInterval + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ensuring[DateInterval] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  22. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): DateInterval + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ensuring[DateInterval] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  23. + + +

    + + + def + + + ensuring(cond: Boolean): DateInterval + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ensuring[DateInterval] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  24. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + + def + + + equals(other: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    DateInterval → AnyRef → Any
    +
  26. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  27. + + +

    + + + def + + + format(dateFormat: String): String + +

    + + Permalink + + + +
  28. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + StringFormat[DateInterval] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  29. + + +

    + + + val + + + from: Long + +

    + + Permalink + + + +
  30. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  31. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  32. + + +

    + + + val + + + interval: DateIntervalType + +

    + + Permalink + + + +
  33. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  34. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  35. + + +

    + + + def + + + next: DateInterval + +

    + + Permalink + + +

    Returns the subsequent corresponding date interval (eg.

    Returns the subsequent corresponding date interval (eg. 2014 -> 2015).

    Example:

    scala> Year(2014).next
    +res1: DateInterval = 2015
    +
  36. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  37. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  38. + + +

    + + + def + + + prev: DateInterval + +

    + + Permalink + + +

    Returns the preceding corresponding date interval (eg.

    Returns the preceding corresponding date interval (eg. May -> April).

    Example:

    scala> Month(2016, 5).prev
    +res1: DateInterval = 2016-04
    +
  39. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  40. + + +

    + + + def + + + to(other: DateInterval): DateInterval + +

    + + Permalink + + +

    Define a custom interval.

    Define a custom interval.

    Example:

    scala> Month(2016, 8) to Day(2016, 8, 29)
    +res1: DateInterval = 2016-08:2016-08-29
    +scala> (Day(2016, 8, 11) to Day(2016, 8, 29)).by(Day).size
    +res2: Int = 18
    +
  41. + + +

    + + + val + + + toOpt: Option[DateInterval] + +

    + + Permalink + + + +
  42. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    DateInterval → AnyRef → Any
    +
  43. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  44. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  45. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  46. + + +

    + + + def + + + [B](y: B): (DateInterval, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + ArrowAssoc[DateInterval] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ +
+

Shadowed Implicit Value Members

+
  1. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + any2stringadd[DateInterval] performed by method any2stringadd in scala.Predef. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (dateInterval: any2stringadd[DateInterval]).+(other)
    Definition Classes
    any2stringadd
    +
  2. + + +

    + + + def + + + <(that: DateInterval): Boolean + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ordered[DateInterval] performed by method orderingToOrdered in scala.math.Ordered. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (dateInterval: Ordered[DateInterval]).<(that)
    Definition Classes
    Ordered
    +
  3. + + +

    + + + def + + + <=(that: DateInterval): Boolean + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ordered[DateInterval] performed by method orderingToOrdered in scala.math.Ordered. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (dateInterval: Ordered[DateInterval]).<=(that)
    Definition Classes
    Ordered
    +
  4. + + +

    + + + def + + + >(that: DateInterval): Boolean + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ordered[DateInterval] performed by method orderingToOrdered in scala.math.Ordered. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (dateInterval: Ordered[DateInterval]).>(that)
    Definition Classes
    Ordered
    +
  5. + + +

    + + + def + + + >=(that: DateInterval): Boolean + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ordered[DateInterval] performed by method orderingToOrdered in scala.math.Ordered. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (dateInterval: Ordered[DateInterval]).>=(that)
    Definition Classes
    Ordered
    +
  6. + + +

    + + + def + + + compare(that: DateInterval): Int + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ordered[DateInterval] performed by method orderingToOrdered in scala.math.Ordered. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (dateInterval: Ordered[DateInterval]).compare(that)
    Definition Classes
    Ordered
    +
  7. + + +

    + + + def + + + compareTo(that: DateInterval): Int + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateInterval to + Ordered[DateInterval] performed by method orderingToOrdered in scala.math.Ordered. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (dateInterval: Ordered[DateInterval]).compareTo(that)
    Definition Classes
    Ordered → Comparable
    +
+
+ + +
+ +
+
+

Inherited from Ordered[DateInterval]

+
+

Inherited from Comparable[DateInterval]

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion orderingToOrdered from + DateInterval to Ordered[DateInterval] +

+
+

Inherited by implicit conversion any2stringadd from + DateInterval to any2stringadd[DateInterval] +

+
+

Inherited by implicit conversion StringFormat from + DateInterval to StringFormat[DateInterval] +

+
+

Inherited by implicit conversion Ensuring from + DateInterval to Ensuring[DateInterval] +

+
+

Inherited by implicit conversion ArrowAssoc from + DateInterval to ArrowAssoc[DateInterval] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/DateIntervalType.html b/api/com/mediative/amadou/DateIntervalType.html new file mode 100644 index 0000000..638afc4 --- /dev/null +++ b/api/com/mediative/amadou/DateIntervalType.html @@ -0,0 +1,809 @@ + + + + DateIntervalType - com.mediative.amadou.DateIntervalType + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou

+

DateIntervalType

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + sealed abstract + class + + + DateIntervalType extends AnyRef + +

+ +

Base class for specific date intervals +

Source
DateInterval.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. DateIntervalType
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateIntervalType to + any2stringadd[DateIntervalType] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (DateIntervalType, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateIntervalType to + ArrowAssoc[DateIntervalType] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + + def + + + apply(timestamp: Long): DateInterval + +

    + + Permalink + + +

    Represent the interval for a given timestamp using the specified +interval type.

    Represent the interval for a given timestamp using the specified +interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1.

    Example:

    scala> Day(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res1: String = 2015-05-07 00:00 +0000
    +scala> Month(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-01 00:00 +0000
    +scala> Year(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res3: String = 2015-01-01 00:00 +0000
    +
  7. + + +

    + + + def + + + apply(date: DateInterval): DateInterval + +

    + + Permalink + + +

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Example:

    scala> Day(1431000000000L)
    +res1: DateInterval = 2015-05-07
    +scala> Week(Day(1431000000000L))
    +res2: DateInterval = 2015-W19
    +scala> Month(Day(1431000000000L))
    +res3: DateInterval = 2015-05
    +scala> Quarter(1431000000000L)
    +res4: DateInterval = 2015-Q2
    +scala> Year(Day(1431000000000L))
    +res5: DateInterval = 2015
    +scala> Year(Day(1431000000000L)).format("yyyy-MM-dd HH:mm ZZ")
    +res6: String = 2015-01-01 00:00 +0000
    +
  8. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  9. + + +

    + + + val + + + calendarField: Int + +

    + + Permalink + + + +
  10. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  11. + + +

    + + + val + + + dateFormat: String + +

    + + Permalink + + + +
  12. + + +

    + + + def + + + ensuring(cond: (DateIntervalType) ⇒ Boolean, msg: ⇒ Any): DateIntervalType + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateIntervalType to + Ensuring[DateIntervalType] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + + def + + + ensuring(cond: (DateIntervalType) ⇒ Boolean): DateIntervalType + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateIntervalType to + Ensuring[DateIntervalType] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  14. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): DateIntervalType + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateIntervalType to + Ensuring[DateIntervalType] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  15. + + +

    + + + def + + + ensuring(cond: Boolean): DateIntervalType + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateIntervalType to + Ensuring[DateIntervalType] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  16. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  19. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateIntervalType to + StringFormat[DateIntervalType] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  20. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  21. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  22. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  23. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + parse(input: String): Option[DateInterval] + +

    + + Permalink + + +

    Parse a timestamp into a date interval.

    Parse a timestamp into a date interval.

    Example:

    scala> Day.parse("2015-05-07")
    +res1: Option[DateInterval] = Some(2015-05-07)
    +scala> Day.parse("2015-05-07").get.format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-07 00:00 +0000
    +
  27. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  28. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  29. + + +

    + + + def + + + today: DateInterval + +

    + + Permalink + + +

    Represent the interval for today using the specified interval type.

    Represent the interval for today using the specified interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1. +

    +
  30. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  32. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  33. + + +

    + + + def + + + [B](y: B): (DateIntervalType, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from DateIntervalType to + ArrowAssoc[DateIntervalType] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + DateIntervalType to any2stringadd[DateIntervalType] +

+
+

Inherited by implicit conversion StringFormat from + DateIntervalType to StringFormat[DateIntervalType] +

+
+

Inherited by implicit conversion Ensuring from + DateIntervalType to Ensuring[DateIntervalType] +

+
+

Inherited by implicit conversion ArrowAssoc from + DateIntervalType to ArrowAssoc[DateIntervalType] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Day$.html b/api/com/mediative/amadou/Day$.html new file mode 100644 index 0000000..26bc71e --- /dev/null +++ b/api/com/mediative/amadou/Day$.html @@ -0,0 +1,629 @@ + + + + Day - com.mediative.amadou.Day + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou

+

Day

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Day extends DateIntervalType + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
DateIntervalType, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Day
  2. DateIntervalType
  3. AnyRef
  4. Any
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + def + + + apply(year: Int, month: Int, day: Int): DateInterval + +

    + + Permalink + + + +
  5. + + +

    + + + def + + + apply(timestamp: Long): DateInterval + +

    + + Permalink + + +

    Represent the interval for a given timestamp using the specified +interval type.

    Represent the interval for a given timestamp using the specified +interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1.

    Example:

    scala> Day(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res1: String = 2015-05-07 00:00 +0000
    +scala> Month(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-01 00:00 +0000
    +scala> Year(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res3: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  6. + + +

    + + + def + + + apply(date: DateInterval): DateInterval + +

    + + Permalink + + +

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Example:

    scala> Day(1431000000000L)
    +res1: DateInterval = 2015-05-07
    +scala> Week(Day(1431000000000L))
    +res2: DateInterval = 2015-W19
    +scala> Month(Day(1431000000000L))
    +res3: DateInterval = 2015-05
    +scala> Quarter(1431000000000L)
    +res4: DateInterval = 2015-Q2
    +scala> Year(Day(1431000000000L))
    +res5: DateInterval = 2015
    +scala> Year(Day(1431000000000L)).format("yyyy-MM-dd HH:mm ZZ")
    +res6: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  7. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  8. + + +

    + + + val + + + calendarField: Int + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  9. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  10. + + +

    + + + val + + + dateFormat: String + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  11. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  12. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  13. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  14. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  17. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  18. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  19. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + + def + + + parse(input: String): Option[DateInterval] + +

    + + Permalink + + +

    Parse a timestamp into a date interval.

    Parse a timestamp into a date interval.

    Example:

    scala> Day.parse("2015-05-07")
    +res1: Option[DateInterval] = Some(2015-05-07)
    +scala> Day.parse("2015-05-07").get.format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-07 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  21. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  23. + + +

    + + + def + + + today: DateInterval + +

    + + Permalink + + +

    Represent the interval for today using the specified interval type.

    Represent the interval for today using the specified interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1. +

    Definition Classes
    DateIntervalType
    +
  24. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  25. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from DateIntervalType

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/HdfsUrl.html b/api/com/mediative/amadou/HdfsUrl.html new file mode 100644 index 0000000..93de60d --- /dev/null +++ b/api/com/mediative/amadou/HdfsUrl.html @@ -0,0 +1,810 @@ + + + + HdfsUrl - com.mediative.amadou.HdfsUrl + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou

+

HdfsUrl

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + case class + + + HdfsUrl(url: String, dateFormat: Option[String] = None) extends Product with Serializable + +

+ +

Utility class for working with HDFS URLs.

It allows to customize how dates are formatted and then

scala> HdfsUrl("some/path") / "somewhere" / Day(2016, 8, 28)
+res1: HdfsUrl = some/path/somewhere/2016-08-28
+scala> HdfsUrl("root", dateFormat = Some("'year='yyyy/'month'=MM")) / Day(2016, 8, 28)
+res2: HdfsUrl = root/year=2016/month=08
Source
HdfsUrl.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. HdfsUrl
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + HdfsUrl(url: String, dateFormat: Option[String] = None) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from HdfsUrl to + any2stringadd[HdfsUrl] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (HdfsUrl, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from HdfsUrl to + ArrowAssoc[HdfsUrl] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + + def + + + /(date: DateInterval): HdfsUrl + +

    + + Permalink + + + +
  6. + + +

    + + + def + + + /(subPath: String): HdfsUrl + +

    + + Permalink + + + +
  7. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  9. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  10. + + +

    + + + val + + + dateFormat: Option[String] + +

    + + Permalink + + + +
  11. + + +

    + + + def + + + ensuring(cond: (HdfsUrl) ⇒ Boolean, msg: ⇒ Any): HdfsUrl + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from HdfsUrl to + Ensuring[HdfsUrl] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: (HdfsUrl) ⇒ Boolean): HdfsUrl + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from HdfsUrl to + Ensuring[HdfsUrl] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): HdfsUrl + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from HdfsUrl to + Ensuring[HdfsUrl] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  14. + + +

    + + + def + + + ensuring(cond: Boolean): HdfsUrl + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from HdfsUrl to + Ensuring[HdfsUrl] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  15. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + + def + + + exists(spark: SparkSession): Boolean + +

    + + Permalink + + + +
  17. + + +

    + + + def + + + fileSystem(spark: SparkSession): FileSystem + +

    + + Permalink + + + +
  18. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  19. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from HdfsUrl to + StringFormat[HdfsUrl] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  20. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  21. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  22. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + + def + + + open[T](spark: SparkSession)(f: (FSDataOutputStream) ⇒ T): T + +

    + + Permalink + + + +
  26. + + +

    + + + def + + + path: Path + +

    + + Permalink + + + +
  27. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  28. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    HdfsUrl → AnyRef → Any
    +
  29. + + +

    + + + val + + + url: String + +

    + + Permalink + + + +
  30. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  32. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  33. + + +

    + + + def + + + [B](y: B): (HdfsUrl, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from HdfsUrl to + ArrowAssoc[HdfsUrl] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + HdfsUrl to any2stringadd[HdfsUrl] +

+
+

Inherited by implicit conversion StringFormat from + HdfsUrl to StringFormat[HdfsUrl] +

+
+

Inherited by implicit conversion Ensuring from + HdfsUrl to Ensuring[HdfsUrl] +

+
+

Inherited by implicit conversion ArrowAssoc from + HdfsUrl to ArrowAssoc[HdfsUrl] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Logging.html b/api/com/mediative/amadou/Logging.html new file mode 100644 index 0000000..e556edc --- /dev/null +++ b/api/com/mediative/amadou/Logging.html @@ -0,0 +1,699 @@ + + + + Logging - com.mediative.amadou.Logging + + + + + + + + + + + + + + + +
+ Trait +

com.mediative.amadou

+

Logging

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + trait + + + Logging extends LazyLogging + +

+ +
Source
Logging.scala
+ Linear Supertypes +
LazyLogging, AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Logging
  2. LazyLogging
  3. AnyRef
  4. Any
  5. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Logging to + any2stringadd[Logging] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (Logging, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Logging to + ArrowAssoc[Logging] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (Logging) ⇒ Boolean, msg: ⇒ Any): Logging + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Logging to + Ensuring[Logging] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (Logging) ⇒ Boolean): Logging + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Logging to + Ensuring[Logging] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Logging + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Logging to + Ensuring[Logging] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): Logging + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Logging to + Ensuring[Logging] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Logging to + StringFormat[Logging] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + + lazy val + + + logger: Logger + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    LazyLogging
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  25. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + + def + + + [B](y: B): (Logging, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Logging to + ArrowAssoc[Logging] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from LazyLogging

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + Logging to any2stringadd[Logging] +

+
+

Inherited by implicit conversion StringFormat from + Logging to StringFormat[Logging] +

+
+

Inherited by implicit conversion Ensuring from + Logging to Ensuring[Logging] +

+
+

Inherited by implicit conversion ArrowAssoc from + Logging to ArrowAssoc[Logging] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/ManagedIO$.html b/api/com/mediative/amadou/ManagedIO$.html new file mode 100644 index 0000000..a5a5466 --- /dev/null +++ b/api/com/mediative/amadou/ManagedIO$.html @@ -0,0 +1,505 @@ + + + + ManagedIO - com.mediative.amadou.ManagedIO + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou

+

ManagedIO

+ Related Docs: + class ManagedIO + | package amadou +

+ + Permalink + + +
+ +

+ + + object + + + ManagedIO extends Serializable + +

+ +
Source
ManagedIO.scala
+ Linear Supertypes +
Serializable, Serializable, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. ManagedIO
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  6. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + def + + + apply[T <: AutoCloseable](open: ⇒ T): ManagedIO[T] + +

    + + Permalink + + + +
  5. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  7. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  8. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  9. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  10. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  13. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/ManagedIO.html b/api/com/mediative/amadou/ManagedIO.html new file mode 100644 index 0000000..0aa74d9 --- /dev/null +++ b/api/com/mediative/amadou/ManagedIO.html @@ -0,0 +1,725 @@ + + + + ManagedIO - com.mediative.amadou.ManagedIO + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou

+

ManagedIO

+ Related Docs: + object ManagedIO + | package amadou +

+ + Permalink + + +
+ +

+ + + case class + + + ManagedIO[T <: AutoCloseable](t: Try[T]) extends Product with Serializable + +

+ +

Manage auto closeable resources. +

Source
ManagedIO.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. ManagedIO
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + ManagedIO(t: Try[T]) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ManagedIO[T] to + any2stringadd[ManagedIO[T]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (ManagedIO[T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ManagedIO[T] to + ArrowAssoc[ManagedIO[T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (ManagedIO[T]) ⇒ Boolean, msg: ⇒ Any): ManagedIO[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ManagedIO[T] to + Ensuring[ManagedIO[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (ManagedIO[T]) ⇒ Boolean): ManagedIO[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ManagedIO[T] to + Ensuring[ManagedIO[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): ManagedIO[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ManagedIO[T] to + Ensuring[ManagedIO[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): ManagedIO[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ManagedIO[T] to + Ensuring[ManagedIO[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  14. + + +

    + + + def + + + flatMap[U <: AutoCloseable](f: (T) ⇒ ManagedIO[U]): ManagedIO[U] + +

    + + Permalink + + + +
  15. + + +

    + + + def + + + foreach(f: (T) ⇒ Unit): Unit + +

    + + Permalink + + + +
  16. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ManagedIO[T] to + StringFormat[ManagedIO[T]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  17. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + + def + + + map[U](f: (T) ⇒ U): U + +

    + + Permalink + + + +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + val + + + t: Try[T] + +

    + + Permalink + + + +
  25. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + + def + + + [B](y: B): (ManagedIO[T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ManagedIO[T] to + ArrowAssoc[ManagedIO[T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + ManagedIO[T] to any2stringadd[ManagedIO[T]] +

+
+

Inherited by implicit conversion StringFormat from + ManagedIO[T] to StringFormat[ManagedIO[T]] +

+
+

Inherited by implicit conversion Ensuring from + ManagedIO[T] to Ensuring[ManagedIO[T]] +

+
+

Inherited by implicit conversion ArrowAssoc from + ManagedIO[T] to ArrowAssoc[ManagedIO[T]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Month$.html b/api/com/mediative/amadou/Month$.html new file mode 100644 index 0000000..e3496d8 --- /dev/null +++ b/api/com/mediative/amadou/Month$.html @@ -0,0 +1,629 @@ + + + + Month - com.mediative.amadou.Month + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou

+

Month

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Month extends DateIntervalType + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
DateIntervalType, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Month
  2. DateIntervalType
  3. AnyRef
  4. Any
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + def + + + apply(year: Int, month: Int): DateInterval + +

    + + Permalink + + + +
  5. + + +

    + + + def + + + apply(timestamp: Long): DateInterval + +

    + + Permalink + + +

    Represent the interval for a given timestamp using the specified +interval type.

    Represent the interval for a given timestamp using the specified +interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1.

    Example:

    scala> Day(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res1: String = 2015-05-07 00:00 +0000
    +scala> Month(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-01 00:00 +0000
    +scala> Year(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res3: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  6. + + +

    + + + def + + + apply(date: DateInterval): DateInterval + +

    + + Permalink + + +

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Example:

    scala> Day(1431000000000L)
    +res1: DateInterval = 2015-05-07
    +scala> Week(Day(1431000000000L))
    +res2: DateInterval = 2015-W19
    +scala> Month(Day(1431000000000L))
    +res3: DateInterval = 2015-05
    +scala> Quarter(1431000000000L)
    +res4: DateInterval = 2015-Q2
    +scala> Year(Day(1431000000000L))
    +res5: DateInterval = 2015
    +scala> Year(Day(1431000000000L)).format("yyyy-MM-dd HH:mm ZZ")
    +res6: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  7. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  8. + + +

    + + + val + + + calendarField: Int + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  9. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  10. + + +

    + + + val + + + dateFormat: String + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  11. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  12. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  13. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  14. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  17. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  18. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  19. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + + def + + + parse(input: String): Option[DateInterval] + +

    + + Permalink + + +

    Parse a timestamp into a date interval.

    Parse a timestamp into a date interval.

    Example:

    scala> Day.parse("2015-05-07")
    +res1: Option[DateInterval] = Some(2015-05-07)
    +scala> Day.parse("2015-05-07").get.format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-07 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  21. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  23. + + +

    + + + def + + + today: DateInterval + +

    + + Permalink + + +

    Represent the interval for today using the specified interval type.

    Represent the interval for today using the specified interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1. +

    Definition Classes
    DateIntervalType
    +
  24. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  25. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from DateIntervalType

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Quarter$$Q1$.html b/api/com/mediative/amadou/Quarter$$Q1$.html new file mode 100644 index 0000000..abf7e3d --- /dev/null +++ b/api/com/mediative/amadou/Quarter$$Q1$.html @@ -0,0 +1,475 @@ + + + + Q1 - com.mediative.amadou.Quarter.Q1 + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Quarter

+

Q1

Related Doc: + package Quarter +

+ + Permalink + + +
+ +

+ + + object + + + Q1 extends Quarter with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, Quarter, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Q1
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. Quarter
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  11. + + +

    + + + val + + + month: Int + +

    + + Permalink + + +
    Definition Classes
    Quarter
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from Quarter

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Quarter$$Q2$.html b/api/com/mediative/amadou/Quarter$$Q2$.html new file mode 100644 index 0000000..b9e9753 --- /dev/null +++ b/api/com/mediative/amadou/Quarter$$Q2$.html @@ -0,0 +1,475 @@ + + + + Q2 - com.mediative.amadou.Quarter.Q2 + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Quarter

+

Q2

Related Doc: + package Quarter +

+ + Permalink + + +
+ +

+ + + object + + + Q2 extends Quarter with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, Quarter, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Q2
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. Quarter
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  11. + + +

    + + + val + + + month: Int + +

    + + Permalink + + +
    Definition Classes
    Quarter
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from Quarter

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Quarter$$Q3$.html b/api/com/mediative/amadou/Quarter$$Q3$.html new file mode 100644 index 0000000..c64bc08 --- /dev/null +++ b/api/com/mediative/amadou/Quarter$$Q3$.html @@ -0,0 +1,475 @@ + + + + Q3 - com.mediative.amadou.Quarter.Q3 + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Quarter

+

Q3

Related Doc: + package Quarter +

+ + Permalink + + +
+ +

+ + + object + + + Q3 extends Quarter with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, Quarter, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Q3
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. Quarter
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  11. + + +

    + + + val + + + month: Int + +

    + + Permalink + + +
    Definition Classes
    Quarter
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from Quarter

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Quarter$$Q4$.html b/api/com/mediative/amadou/Quarter$$Q4$.html new file mode 100644 index 0000000..c7ecf56 --- /dev/null +++ b/api/com/mediative/amadou/Quarter$$Q4$.html @@ -0,0 +1,475 @@ + + + + Q4 - com.mediative.amadou.Quarter.Q4 + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Quarter

+

Q4

Related Doc: + package Quarter +

+ + Permalink + + +
+ +

+ + + object + + + Q4 extends Quarter with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, Quarter, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Q4
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. Quarter
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  11. + + +

    + + + val + + + month: Int + +

    + + Permalink + + +
    Definition Classes
    Quarter
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from Quarter

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Quarter$.html b/api/com/mediative/amadou/Quarter$.html new file mode 100644 index 0000000..eceb857 --- /dev/null +++ b/api/com/mediative/amadou/Quarter$.html @@ -0,0 +1,708 @@ + + + + Quarter - com.mediative.amadou.Quarter + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou

+

Quarter

+ Related Docs: + class Quarter + | package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Quarter extends DateIntervalType + +

+ +

Quarters of the year.

scala> Quarter(2017, Quarter.Q1)
+res1: DateInterval = 2017-Q1
+scala> Year(2017).by(Quarter).toList
+res2: List[DateInterval] = List(2017-Q1, 2017-Q2, 2017-Q3, 2017-Q4)
+scala> Quarter(2017, Quarter.Q1).by(Month).toList
+res3: List[DateInterval] = List(2017-01, 2017-02, 2017-03)
+scala> Quarter.parse("2008-Q4")
+res4: Option[DateInterval] = Some(2008-Q4)
+scala> Quarter(2017, Quarter.Q2).format("yyyy-MM-dd")
+res5: String = 2017-04-01
Source
DateInterval.scala
+ Linear Supertypes +
DateIntervalType, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Quarter
  2. DateIntervalType
  3. AnyRef
  4. Any
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + object + + + Q1 extends Quarter with Product with Serializable + +

    + + Permalink + + + +
  5. + + +

    + + + object + + + Q2 extends Quarter with Product with Serializable + +

    + + Permalink + + + +
  6. + + +

    + + + object + + + Q3 extends Quarter with Product with Serializable + +

    + + Permalink + + + +
  7. + + +

    + + + object + + + Q4 extends Quarter with Product with Serializable + +

    + + Permalink + + + +
  8. + + +

    + + + def + + + apply(year: Int, quarter: Quarter): DateInterval + +

    + + Permalink + + + +
  9. + + +

    + + + def + + + apply(timestamp: Long): DateInterval + +

    + + Permalink + + +

    Represent the interval for a given timestamp using the specified +interval type.

    Represent the interval for a given timestamp using the specified +interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1.

    Example:

    scala> Day(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res1: String = 2015-05-07 00:00 +0000
    +scala> Month(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-01 00:00 +0000
    +scala> Year(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res3: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  10. + + +

    + + + def + + + apply(date: DateInterval): DateInterval + +

    + + Permalink + + +

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Example:

    scala> Day(1431000000000L)
    +res1: DateInterval = 2015-05-07
    +scala> Week(Day(1431000000000L))
    +res2: DateInterval = 2015-W19
    +scala> Month(Day(1431000000000L))
    +res3: DateInterval = 2015-05
    +scala> Quarter(1431000000000L)
    +res4: DateInterval = 2015-Q2
    +scala> Year(Day(1431000000000L))
    +res5: DateInterval = 2015
    +scala> Year(Day(1431000000000L)).format("yyyy-MM-dd HH:mm ZZ")
    +res6: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  11. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + + val + + + calendarField: Int + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  13. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  14. + + +

    + + + val + + + dateFormat: String + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  15. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  18. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  20. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  21. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + parse(input: String): Option[DateInterval] + +

    + + Permalink + + +

    Parse a timestamp into a date interval.

    Parse a timestamp into a date interval.

    Example:

    scala> Day.parse("2015-05-07")
    +res1: Option[DateInterval] = Some(2015-05-07)
    +scala> Day.parse("2015-05-07").get.format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-07 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  25. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  27. + + +

    + + + def + + + today: DateInterval + +

    + + Permalink + + +

    Represent the interval for today using the specified interval type.

    Represent the interval for today using the specified interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1. +

    Definition Classes
    DateIntervalType
    +
  28. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from DateIntervalType

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Quarter.html b/api/com/mediative/amadou/Quarter.html new file mode 100644 index 0000000..0ba3ac2 --- /dev/null +++ b/api/com/mediative/amadou/Quarter.html @@ -0,0 +1,699 @@ + + + + Quarter - com.mediative.amadou.Quarter + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou

+

Quarter

+ Related Docs: + object Quarter + | package amadou +

+ + Permalink + + +
+ +

+ + sealed abstract + class + + + Quarter extends AnyRef + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses +
Q1, Q2, Q3, Q4
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Quarter
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Quarter to + any2stringadd[Quarter] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (Quarter, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Quarter to + ArrowAssoc[Quarter] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (Quarter) ⇒ Boolean, msg: ⇒ Any): Quarter + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Quarter to + Ensuring[Quarter] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (Quarter) ⇒ Boolean): Quarter + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Quarter to + Ensuring[Quarter] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Quarter + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Quarter to + Ensuring[Quarter] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): Quarter + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Quarter to + Ensuring[Quarter] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Quarter to + StringFormat[Quarter] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + + val + + + month: Int + +

    + + Permalink + + + +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  25. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + + def + + + [B](y: B): (Quarter, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Quarter to + ArrowAssoc[Quarter] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + Quarter to any2stringadd[Quarter] +

+
+

Inherited by implicit conversion StringFormat from + Quarter to StringFormat[Quarter] +

+
+

Inherited by implicit conversion Ensuring from + Quarter to Ensuring[Quarter] +

+
+

Inherited by implicit conversion ArrowAssoc from + Quarter to ArrowAssoc[Quarter] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/RetryOptions.html b/api/com/mediative/amadou/RetryOptions.html new file mode 100644 index 0000000..5d137e3 --- /dev/null +++ b/api/com/mediative/amadou/RetryOptions.html @@ -0,0 +1,688 @@ + + + + RetryOptions - com.mediative.amadou.RetryOptions + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou

+

RetryOptions

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + case class + + + RetryOptions(delay: FiniteDuration, max: Int) extends Product with Serializable + +

+ +
Source
SparkRunner.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. RetryOptions
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + RetryOptions(delay: FiniteDuration, max: Int) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RetryOptions to + any2stringadd[RetryOptions] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (RetryOptions, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RetryOptions to + ArrowAssoc[RetryOptions] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + val + + + delay: FiniteDuration + +

    + + Permalink + + + +
  9. + + +

    + + + def + + + ensuring(cond: (RetryOptions) ⇒ Boolean, msg: ⇒ Any): RetryOptions + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RetryOptions to + Ensuring[RetryOptions] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (RetryOptions) ⇒ Boolean): RetryOptions + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RetryOptions to + Ensuring[RetryOptions] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): RetryOptions + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RetryOptions to + Ensuring[RetryOptions] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): RetryOptions + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RetryOptions to + Ensuring[RetryOptions] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RetryOptions to + StringFormat[RetryOptions] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  18. + + +

    + + + val + + + max: Int + +

    + + Permalink + + + +
  19. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  24. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  25. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + + def + + + [B](y: B): (RetryOptions, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RetryOptions to + ArrowAssoc[RetryOptions] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + RetryOptions to any2stringadd[RetryOptions] +

+
+

Inherited by implicit conversion StringFormat from + RetryOptions to StringFormat[RetryOptions] +

+
+

Inherited by implicit conversion Ensuring from + RetryOptions to Ensuring[RetryOptions] +

+
+

Inherited by implicit conversion ArrowAssoc from + RetryOptions to ArrowAssoc[RetryOptions] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Schedule$.html b/api/com/mediative/amadou/Schedule$.html new file mode 100644 index 0000000..e99b7ec --- /dev/null +++ b/api/com/mediative/amadou/Schedule$.html @@ -0,0 +1,539 @@ + + + + Schedule - com.mediative.amadou.Schedule + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou

+

Schedule

+ Related Docs: + class Schedule + | package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Schedule extends Serializable + +

+ +
Source
Schedule.scala
+ Linear Supertypes +
Serializable, Serializable, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Schedule
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  6. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + def + + + apply(date: DateInterval): Schedule + +

    + + Permalink + + + +
  5. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  7. + + +

    + + + val + + + empty: Schedule + +

    + + Permalink + + + +
  8. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  9. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  11. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  13. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  14. + + +

    + + + def + + + iterate(interval: DateInterval): Schedule + +

    + + Permalink + + + +
  15. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  18. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  19. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  20. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  21. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  22. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Schedule.html b/api/com/mediative/amadou/Schedule.html new file mode 100644 index 0000000..12b97ca --- /dev/null +++ b/api/com/mediative/amadou/Schedule.html @@ -0,0 +1,2585 @@ + + + + Schedule - com.mediative.amadou.Schedule + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou

+

Schedule

+ Related Docs: + object Schedule + | package amadou +

+ + Permalink + + +
+ +

+ + + case class + + + Schedule(dates: Stream[DateInterval]) extends Traversable[DateInterval] with Product with Serializable + +

+ +

A schedule is a sequence of monotonic decreasing dates. It can be +composed with other schedules to form more complex execution plans.

Generating a list of days for a daily schedule:

scala> Schedule.iterate(Day(2016, 7, 2)).take(3).toList
+res2: List[DateInterval] = List(2016-07-02, 2016-07-01, 2016-06-30)

Generate a list of days for a monthly schedule:

scala> Schedule.iterate(Month(2016, 3)).where(Year(2016).<=).toList
+res1: List[DateInterval] = List(2016-03, 2016-02, 2016-01)
Source
Schedule.scala
+ Linear Supertypes + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Schedule
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. Traversable
  7. GenTraversable
  8. GenericTraversableTemplate
  9. TraversableLike
  10. GenTraversableLike
  11. Parallelizable
  12. TraversableOnce
  13. GenTraversableOnce
  14. FilterMonadic
  15. HasNewBuilder
  16. AnyRef
  17. Any
  18. +
+
+ Implicitly
+
+
  1. by CollectionsHaveToParArray
  2. by MonadOps
  3. by any2stringadd
  4. by StringFormat
  5. by Ensuring
  6. by ArrowAssoc
  7. by alternateImplicit
  8. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + Schedule(dates: Stream[DateInterval]) + +

    + + Permalink + + + +
+
+ +
+

Type Members

+
  1. + + +

    + + + type + + + Self = Traversable[DateInterval] + +

    + + Permalink + + +
    Attributes
    protected[this]
    Definition Classes
    TraversableLike
    +
  2. + + +

    + + + class + + + WithFilter extends FilterMonadic[A, Repr] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike
    +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + any2stringadd[Schedule] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ++[B >: DateInterval, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  5. + + +

    + + + def + + + ++:[B >: DateInterval, That](that: Traversable[B])(implicit bf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike
    +
  6. + + +

    + + + def + + + ++:[B >: DateInterval, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike
    +
  7. + + +

    + + + def + + + ->[B](y: B): (Schedule, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + ArrowAssoc[Schedule] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  8. + + +

    + + + def + + + /:[B](z: B)(op: (B, DateInterval) ⇒ B): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  9. + + +

    + + + def + + + :\[B](z: B)(op: (DateInterval, B) ⇒ B): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  10. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + + def + + + addString(b: StringBuilder): StringBuilder + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce
    +
  12. + + +

    + + + def + + + addString(b: StringBuilder, sep: String): StringBuilder + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce
    +
  13. + + +

    + + + def + + + addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce
    +
  14. + + +

    + + + def + + + aggregate[B](z: ⇒ B)(seqop: (B, DateInterval) ⇒ B, combop: (B, B) ⇒ B): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  15. + + +

    + + + def + + + and(that: Schedule): Schedule + +

    + + Permalink + + +

    Combine two date streams.

    +
  16. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  17. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + + def + + + collect[B, That](pf: PartialFunction[DateInterval, B])(implicit bf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  19. + + +

    + + + def + + + collectFirst[B](pf: PartialFunction[DateInterval, B]): Option[B] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce
    +
  20. + + +

    + + + def + + + companion: GenericCompanion[Traversable] + +

    + + Permalink + + +
    Definition Classes
    Traversable → GenTraversable → GenericTraversableTemplate
    +
  21. + + +

    + + + def + + + copyToArray[B >: DateInterval](xs: Array[B], start: Int, len: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    +
  22. + + +

    + + + def + + + copyToArray[B >: DateInterval](xs: Array[B]): Unit + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  23. + + +

    + + + def + + + copyToArray[B >: DateInterval](xs: Array[B], start: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  24. + + +

    + + + def + + + copyToBuffer[B >: DateInterval](dest: Buffer[B]): Unit + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce
    +
  25. + + +

    + + + def + + + count(p: (DateInterval) ⇒ Boolean): Int + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  26. + + +

    + + + val + + + dates: Stream[DateInterval] + +

    + + Permalink + + + +
  27. + + +

    + + + def + + + drop(n: Int): Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  28. + + +

    + + + def + + + dropWhile(p: (DateInterval) ⇒ Boolean): Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  29. + + +

    + + + def + + + ensuring(cond: (Schedule) ⇒ Boolean, msg: ⇒ Any): Schedule + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + Ensuring[Schedule] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  30. + + +

    + + + def + + + ensuring(cond: (Schedule) ⇒ Boolean): Schedule + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + Ensuring[Schedule] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  31. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Schedule + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + Ensuring[Schedule] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  32. + + +

    + + + def + + + ensuring(cond: Boolean): Schedule + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + Ensuring[Schedule] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  33. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  34. + + +

    + + + def + + + exists(p: (DateInterval) ⇒ Boolean): Boolean + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    +
  35. + + +

    + + + def + + + filter(p: (DateInterval) ⇒ Boolean): Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  36. + + +

    + + + def + + + filterNot(p: (DateInterval) ⇒ Boolean): Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  37. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  38. + + +

    + + + def + + + find(p: (DateInterval) ⇒ Boolean): Option[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    +
  39. + + +

    + + + def + + + flatMap[B, That](f: (DateInterval) ⇒ GenTraversableOnce[B])(implicit bf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike → FilterMonadic
    +
  40. + + +

    + + + def + + + flatten[B](implicit asTraversable: (DateInterval) ⇒ GenTraversableOnce[B]): Traversable[B] + +

    + + Permalink + + +
    Definition Classes
    GenericTraversableTemplate
    +
  41. + + +

    + + + def + + + fold[A1 >: DateInterval](z: A1)(op: (A1, A1) ⇒ A1): A1 + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  42. + + +

    + + + def + + + foldLeft[B](z: B)(op: (B, DateInterval) ⇒ B): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  43. + + +

    + + + def + + + foldRight[B](z: B)(op: (DateInterval, B) ⇒ B): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  44. + + +

    + + + def + + + forall(p: (DateInterval) ⇒ Boolean): Boolean + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    +
  45. + + +

    + + final + def + + + foreach[U](f: (DateInterval) ⇒ U): Unit + +

    + + Permalink + + +
    Definition Classes
    Schedule → GenericTraversableTemplate → TraversableLike → GenTraversableLike → TraversableOnce → GenTraversableOnce → FilterMonadic
    +
  46. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + StringFormat[Schedule] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  47. + + +

    + + + def + + + genericBuilder[B]: Builder[B, Traversable[B]] + +

    + + Permalink + + +
    Definition Classes
    GenericTraversableTemplate
    +
  48. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  49. + + +

    + + + def + + + groupBy[K](f: (DateInterval) ⇒ K): Map[K, Traversable[DateInterval]] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  50. + + +

    + + + def + + + hasDefiniteSize: Boolean + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    +
  51. + + +

    + + + def + + + head: DateInterval + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  52. + + +

    + + + def + + + headOption: Option[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  53. + + +

    + + + def + + + init: Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  54. + + +

    + + + def + + + inits: Iterator[Traversable[DateInterval]] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike
    +
  55. + + +

    + + + def + + + isEmpty: Boolean + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    +
  56. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  57. + + +

    + + final + def + + + isTraversableAgain: Boolean + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike → GenTraversableOnce
    +
  58. + + +

    + + + def + + + last: DateInterval + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  59. + + +

    + + + def + + + lastOption: Option[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  60. + + +

    + + + def + + + map[B, That](f: (DateInterval) ⇒ B)(implicit bf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike → FilterMonadic
    +
  61. + + +

    + + + def + + + max[B >: DateInterval](implicit cmp: Ordering[B]): DateInterval + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  62. + + +

    + + + def + + + maxBy[B](f: (DateInterval) ⇒ B)(implicit cmp: Ordering[B]): DateInterval + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  63. + + +

    + + + def + + + min[B >: DateInterval](implicit cmp: Ordering[B]): DateInterval + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  64. + + +

    + + + def + + + minBy[B](f: (DateInterval) ⇒ B)(implicit cmp: Ordering[B]): DateInterval + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  65. + + +

    + + + def + + + mkString: String + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  66. + + +

    + + + def + + + mkString(sep: String): String + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  67. + + +

    + + + def + + + mkString(start: String, sep: String, end: String): String + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  68. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  69. + + +

    + + + def + + + newBuilder: Builder[DateInterval, Traversable[DateInterval]] + +

    + + Permalink + + +
    Attributes
    protected[this]
    Definition Classes
    GenericTraversableTemplate → HasNewBuilder
    +
  70. + + +

    + + + def + + + nonEmpty: Boolean + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  71. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  72. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  73. + + +

    + + + def + + + par: ParIterable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    Parallelizable
    +
  74. + + +

    + + + def + + + parCombiner: Combiner[DateInterval, ParIterable[DateInterval]] + +

    + + Permalink + + +
    Attributes
    protected[this]
    Definition Classes
    TraversableLike → Parallelizable
    +
  75. + + +

    + + + def + + + partition(p: (DateInterval) ⇒ Boolean): (Traversable[DateInterval], Traversable[DateInterval]) + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  76. + + +

    + + + def + + + product[B >: DateInterval](implicit num: Numeric[B]): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  77. + + +

    + + + def + + + reduce[A1 >: DateInterval](op: (A1, A1) ⇒ A1): A1 + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  78. + + +

    + + + def + + + reduceLeft[B >: DateInterval](op: (B, DateInterval) ⇒ B): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce
    +
  79. + + +

    + + + def + + + reduceLeftOption[B >: DateInterval](op: (B, DateInterval) ⇒ B): Option[B] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  80. + + +

    + + + def + + + reduceOption[A1 >: DateInterval](op: (A1, A1) ⇒ A1): Option[A1] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  81. + + +

    + + + def + + + reduceRight[B >: DateInterval](op: (DateInterval, B) ⇒ B): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  82. + + +

    + + + def + + + reduceRightOption[B >: DateInterval](op: (DateInterval, B) ⇒ B): Option[B] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  83. + + +

    + + + def + + + repr: Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  84. + + +

    + + + def + + + reversed: List[DateInterval] + +

    + + Permalink + + +
    Attributes
    protected[this]
    Definition Classes
    TraversableOnce
    +
  85. + + +

    + + + def + + + scan[B >: DateInterval, That](z: B)(op: (B, B) ⇒ B)(implicit cbf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  86. + + +

    + + + def + + + scanLeft[B, That](z: B)(op: (B, DateInterval) ⇒ B)(implicit bf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  87. + + +

    + + + def + + + scanRight[B, That](z: B)(op: (DateInterval, B) ⇒ B)(implicit bf: CanBuildFrom[Traversable[DateInterval], B, That]): That + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    Annotations
    + @migration + +
    Migration

    (Changed in version 2.9.0) The behavior of scanRight has changed. The previous behavior can be reproduced with scanRight.reverse.

    +
  88. + + +

    + + + def + + + seq: Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    Traversable → GenTraversable → Parallelizable → TraversableOnce → GenTraversableOnce
    +
  89. + + +

    + + + def + + + size: Int + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  90. + + +

    + + + def + + + slice(from: Int, until: Int): Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  91. + + +

    + + + def + + + span(p: (DateInterval) ⇒ Boolean): (Traversable[DateInterval], Traversable[DateInterval]) + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  92. + + +

    + + + def + + + splitAt(n: Int): (Traversable[DateInterval], Traversable[DateInterval]) + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  93. + + +

    + + + def + + + stringPrefix: String + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  94. + + +

    + + + def + + + sum[B >: DateInterval](implicit num: Numeric[B]): B + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  95. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  96. + + +

    + + + def + + + tail: Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  97. + + +

    + + + def + + + tails: Iterator[Traversable[DateInterval]] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike
    +
  98. + + +

    + + + def + + + take(n: Int): Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  99. + + +

    + + + def + + + takeWhile(p: (DateInterval) ⇒ Boolean): Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableLike
    +
  100. + + +

    + + + def + + + thisCollection: Traversable[DateInterval] + +

    + + Permalink + + +
    Attributes
    protected[this]
    Definition Classes
    TraversableLike
    +
  101. + + +

    + + + def + + + to[Col[_]](implicit cbf: CanBuildFrom[Nothing, DateInterval, Col[DateInterval]]): Col[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    +
  102. + + +

    + + + def + + + toArray[B >: DateInterval](implicit arg0: ClassTag[B]): Array[B] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  103. + + +

    + + + def + + + toBuffer[B >: DateInterval]: Buffer[B] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  104. + + +

    + + + def + + + toCollection(repr: Traversable[DateInterval]): Traversable[DateInterval] + +

    + + Permalink + + +
    Attributes
    protected[this]
    Definition Classes
    TraversableLike
    +
  105. + + +

    + + + def + + + toIndexedSeq: IndexedSeq[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  106. + + +

    + + + def + + + toIterable: Iterable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  107. + + +

    + + + def + + + toIterator: Iterator[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableOnce
    +
  108. + + +

    + + + def + + + toList: List[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  109. + + +

    + + + def + + + toMap[T, U](implicit ev: <:<[DateInterval, (T, U)]): Map[T, U] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  110. + + +

    + + + def + + + toParArray: ParArray[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + CollectionsHaveToParArray[Schedule, T] performed by method CollectionsHaveToParArray in scala.collection.parallel. + This conversion will take place only if an implicit value of type (Schedule) ⇒ GenTraversableOnce[T] is in scope. +
    Definition Classes
    CollectionsHaveToParArray
    +
  111. + + +

    + + + def + + + toSeq: Seq[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  112. + + +

    + + + def + + + toSet[B >: DateInterval]: Set[B] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  113. + + +

    + + + def + + + toStream: Stream[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → GenTraversableOnce
    +
  114. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → Any
    +
  115. + + +

    + + + def + + + toTraversable: Traversable[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    Annotations
    + @deprecatedOverriding( + + ... + , + + "2.11.0" + ) + +
    +
  116. + + +

    + + + def + + + toVector: Vector[DateInterval] + +

    + + Permalink + + +
    Definition Classes
    TraversableOnce → GenTraversableOnce
    +
  117. + + +

    + + + def + + + transpose[B](implicit asTraversable: (DateInterval) ⇒ GenTraversableOnce[B]): Traversable[Traversable[B]] + +

    + + Permalink + + +
    Definition Classes
    GenericTraversableTemplate
    Annotations
    + @migration + +
    Migration

    (Changed in version 2.9.0) transpose throws an IllegalArgumentException if collections are not uniformly sized.

    +
  118. + + +

    + + + def + + + unzip[A1, A2](implicit asPair: (DateInterval) ⇒ (A1, A2)): (Traversable[A1], Traversable[A2]) + +

    + + Permalink + + +
    Definition Classes
    GenericTraversableTemplate
    +
  119. + + +

    + + + def + + + unzip3[A1, A2, A3](implicit asTriple: (DateInterval) ⇒ (A1, A2, A3)): (Traversable[A1], Traversable[A2], Traversable[A3]) + +

    + + Permalink + + +
    Definition Classes
    GenericTraversableTemplate
    +
  120. + + +

    + + + def + + + view(from: Int, until: Int): TraversableView[DateInterval, Traversable[DateInterval]] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike
    +
  121. + + +

    + + + def + + + view: TraversableView[DateInterval, Traversable[DateInterval]] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike
    +
  122. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  123. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  124. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  125. + + +

    + + + def + + + where(predicate: (DateInterval) ⇒ Boolean): Schedule + +

    + + Permalink + + +

    Only includes dates newer than a given date.

    +
  126. + + +

    + + + def + + + withFilter(p: (DateInterval) ⇒ Boolean): FilterMonadic[DateInterval, Traversable[DateInterval]] + +

    + + Permalink + + +
    Definition Classes
    TraversableLike → FilterMonadic
    +
  127. + + +

    + + + def + + + [B](y: B): (Schedule, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + ArrowAssoc[Schedule] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ +
+

Shadowed Implicit Value Members

+
  1. + + +

    + + + def + + + filter(p: (DateInterval) ⇒ Boolean): TraversableOnce[DateInterval] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + MonadOps[DateInterval] performed by method MonadOps in scala.collection.TraversableOnce. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (schedule: MonadOps[DateInterval]).filter(p)
    Definition Classes
    MonadOps
    +
  2. + + +

    + + + def + + + flatMap[B](f: (DateInterval) ⇒ GenTraversableOnce[B]): TraversableOnce[B] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + MonadOps[DateInterval] performed by method MonadOps in scala.collection.TraversableOnce. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (schedule: MonadOps[DateInterval]).flatMap(f)
    Definition Classes
    MonadOps
    +
  3. + + +

    + + + def + + + map[B](f: (DateInterval) ⇒ B): TraversableOnce[B] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + MonadOps[DateInterval] performed by method MonadOps in scala.collection.TraversableOnce. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (schedule: MonadOps[DateInterval]).map(f)
    Definition Classes
    MonadOps
    +
  4. + + +

    + + + def + + + withFilter(p: (DateInterval) ⇒ Boolean): Iterator[DateInterval] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Schedule to + MonadOps[DateInterval] performed by method MonadOps in scala.collection.TraversableOnce. + +
    Shadowing
    This implicitly inherited member is shadowed by one or more members in this class.
    To access this member you can use a type ascription:
    (schedule: MonadOps[DateInterval]).withFilter(p)
    Definition Classes
    MonadOps
    +
+
+ + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from Traversable[DateInterval]

+
+

Inherited from GenTraversable[DateInterval]

+
+

Inherited from TraversableOnce[DateInterval]

+
+

Inherited from GenTraversableOnce[DateInterval]

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion CollectionsHaveToParArray from + Schedule to CollectionsHaveToParArray[Schedule, T] +

+
+

Inherited by implicit conversion MonadOps from + Schedule to MonadOps[DateInterval] +

+
+

Inherited by implicit conversion any2stringadd from + Schedule to any2stringadd[Schedule] +

+
+

Inherited by implicit conversion StringFormat from + Schedule to StringFormat[Schedule] +

+
+

Inherited by implicit conversion Ensuring from + Schedule to Ensuring[Schedule] +

+
+

Inherited by implicit conversion ArrowAssoc from + Schedule to ArrowAssoc[Schedule] +

+
+

Inherited by implicit conversion alternateImplicit from + Schedule to ForceImplicitAmbiguity +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/ScheduleDsl.html b/api/com/mediative/amadou/ScheduleDsl.html new file mode 100644 index 0000000..ae72558 --- /dev/null +++ b/api/com/mediative/amadou/ScheduleDsl.html @@ -0,0 +1,768 @@ + + + + ScheduleDsl - com.mediative.amadou.ScheduleDsl + + + + + + + + + + + + + + + +
+ Trait +

com.mediative.amadou

+

ScheduleDsl

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + trait + + + ScheduleDsl extends AnyRef + +

+ +

Mixin providing a DSL for defining schedules.

If for example, we want to run a report against a cumulative data source +each day and must ensure that it runs the first of every month to generate +a report for all of the previous month. This schedule can be defined as:

val schedule = today and monthly

If we are only interested in "backfilling" jobs from a specific date use +a where clause, e.g.:

val schedule = daily where (_ >= Date(2016, 4, 12)
Source
Schedule.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. ScheduleDsl
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ScheduleDsl to + any2stringadd[ScheduleDsl] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (ScheduleDsl, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ScheduleDsl to + ArrowAssoc[ScheduleDsl] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + daily: Schedule + +

    + + Permalink + + + +
  9. + + +

    + + + def + + + ensuring(cond: (ScheduleDsl) ⇒ Boolean, msg: ⇒ Any): ScheduleDsl + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ScheduleDsl to + Ensuring[ScheduleDsl] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (ScheduleDsl) ⇒ Boolean): ScheduleDsl + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ScheduleDsl to + Ensuring[ScheduleDsl] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): ScheduleDsl + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ScheduleDsl to + Ensuring[ScheduleDsl] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): ScheduleDsl + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ScheduleDsl to + Ensuring[ScheduleDsl] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  16. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ScheduleDsl to + StringFormat[ScheduleDsl] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  17. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  20. + + +

    + + + def + + + monthly: Schedule + +

    + + Permalink + + + +
  21. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + quarterly: Schedule + +

    + + Permalink + + + +
  25. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  27. + + +

    + + + def + + + today: Schedule + +

    + + Permalink + + + +
  28. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + + def + + + yearly: Schedule + +

    + + Permalink + + + +
  32. + + +

    + + + def + + + [B](y: B): (ScheduleDsl, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from ScheduleDsl to + ArrowAssoc[ScheduleDsl] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + ScheduleDsl to any2stringadd[ScheduleDsl] +

+
+

Inherited by implicit conversion StringFormat from + ScheduleDsl to StringFormat[ScheduleDsl] +

+
+

Inherited by implicit conversion Ensuring from + ScheduleDsl to Ensuring[ScheduleDsl] +

+
+

Inherited by implicit conversion ArrowAssoc from + ScheduleDsl to ArrowAssoc[ScheduleDsl] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Schema$.html b/api/com/mediative/amadou/Schema$.html new file mode 100644 index 0000000..0a99a5c --- /dev/null +++ b/api/com/mediative/amadou/Schema$.html @@ -0,0 +1,501 @@ + + + + Schema - com.mediative.amadou.Schema + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou

+

Schema

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Schema + +

+ +

Marker trait for case classes to automatically provide a Spark +encoder. +

Source
Schema.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Schema
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + implicit + def + + + encoder[T <: Product](implicit arg0: scala.reflect.api.JavaUniverse.TypeTag[T]): Encoder[T] + +

    + + Permalink + + + +
  7. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  8. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  9. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  10. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  13. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Slack$$Payload.html b/api/com/mediative/amadou/Slack$$Payload.html new file mode 100644 index 0000000..bfbbcf1 --- /dev/null +++ b/api/com/mediative/amadou/Slack$$Payload.html @@ -0,0 +1,739 @@ + + + + Payload - com.mediative.amadou.Slack.Payload + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.Slack

+

Payload

Related Doc: + package Slack +

+ + Permalink + + +
+ +

+ + + case class + + + Payload(channel: String, text: String, username: String, icon_emoji: String, link_names: Boolean) extends Product with Serializable + +

+ +
Source
Slack.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Payload
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + Payload(channel: String, text: String, username: String, icon_emoji: String, link_names: Boolean) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Payload to + any2stringadd[Payload] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (Payload, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Payload to + ArrowAssoc[Payload] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + val + + + channel: String + +

    + + Permalink + + + +
  8. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  9. + + +

    + + + def + + + ensuring(cond: (Payload) ⇒ Boolean, msg: ⇒ Any): Payload + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Payload to + Ensuring[Payload] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (Payload) ⇒ Boolean): Payload + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Payload to + Ensuring[Payload] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Payload + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Payload to + Ensuring[Payload] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): Payload + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Payload to + Ensuring[Payload] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Payload to + StringFormat[Payload] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + val + + + icon_emoji: String + +

    + + Permalink + + + +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + + val + + + link_names: Boolean + +

    + + Permalink + + + +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + val + + + text: String + +

    + + Permalink + + + +
  25. + + +

    + + + val + + + username: String + +

    + + Permalink + + + +
  26. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + + def + + + [B](y: B): (Payload, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Payload to + ArrowAssoc[Payload] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + Payload to any2stringadd[Payload] +

+
+

Inherited by implicit conversion StringFormat from + Payload to StringFormat[Payload] +

+
+

Inherited by implicit conversion Ensuring from + Payload to Ensuring[Payload] +

+
+

Inherited by implicit conversion ArrowAssoc from + Payload to ArrowAssoc[Payload] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Slack$$PostException.html b/api/com/mediative/amadou/Slack$$PostException.html new file mode 100644 index 0000000..8e5081e --- /dev/null +++ b/api/com/mediative/amadou/Slack$$PostException.html @@ -0,0 +1,929 @@ + + + + PostException - com.mediative.amadou.Slack.PostException + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.Slack

+

PostException

Related Doc: + package Slack +

+ + Permalink + + +
+ +

+ + + case class + + + PostException(msg: String) extends RuntimeException with Product with Serializable + +

+ +
Source
Slack.scala
+ Linear Supertypes +
Serializable, Product, Equals, RuntimeException, Exception, Throwable, Serializable, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. PostException
  2. Serializable
  3. Product
  4. Equals
  5. RuntimeException
  6. Exception
  7. Throwable
  8. Serializable
  9. AnyRef
  10. Any
  11. +
+
+ Implicitly
+
+
  1. by RichException
  2. by any2stringadd
  3. by StringFormat
  4. by Ensuring
  5. by ArrowAssoc
  6. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + PostException(msg: String) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + any2stringadd[PostException] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (PostException, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + ArrowAssoc[PostException] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + addSuppressed(arg0: Throwable): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  7. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  8. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  9. + + +

    + + + def + + + ensuring(cond: (PostException) ⇒ Boolean, msg: ⇒ Any): PostException + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + Ensuring[PostException] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (PostException) ⇒ Boolean): PostException + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + Ensuring[PostException] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): PostException + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + Ensuring[PostException] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): PostException + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + Ensuring[PostException] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + fillInStackTrace(): Throwable + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  15. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  16. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + StringFormat[PostException] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  17. + + +

    + + + def + + + getCause(): Throwable + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  18. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + + def + + + getLocalizedMessage(): String + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  20. + + +

    + + + def + + + getMessage(): String + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  21. + + +

    + + + def + + + getStackTrace(): Array[StackTraceElement] + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  22. + + +

    + + final + def + + + getSuppressed(): Array[Throwable] + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  23. + + +

    + + + def + + + initCause(arg0: Throwable): Throwable + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  24. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  25. + + +

    + + + val + + + msg: String + +

    + + Permalink + + + +
  26. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  27. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  28. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  29. + + +

    + + + def + + + printStackTrace(arg0: PrintWriter): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  30. + + +

    + + + def + + + printStackTrace(arg0: PrintStream): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  31. + + +

    + + + def + + + printStackTrace(): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  32. + + +

    + + + def + + + setStackTrace(arg0: Array[StackTraceElement]): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  33. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  34. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    Throwable → AnyRef → Any
    +
  35. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  36. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  37. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  38. + + +

    + + + def + + + [B](y: B): (PostException, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + ArrowAssoc[PostException] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + +
+

Deprecated Value Members

+
  1. + + +

    + + + def + + + getStackTraceString: String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PostException to + RichException performed by method RichException in scala.Predef. + +
    Definition Classes
    RichException
    Annotations
    + @deprecated + +
    Deprecated

    (Since version 2.11.0) Use Throwable#getStackTrace

    +
+
+
+ +
+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from RuntimeException

+
+

Inherited from Exception

+
+

Inherited from Throwable

+
+

Inherited from Serializable

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion RichException from + PostException to RichException +

+
+

Inherited by implicit conversion any2stringadd from + PostException to any2stringadd[PostException] +

+
+

Inherited by implicit conversion StringFormat from + PostException to StringFormat[PostException] +

+
+

Inherited by implicit conversion Ensuring from + PostException to Ensuring[PostException] +

+
+

Inherited by implicit conversion ArrowAssoc from + PostException to ArrowAssoc[PostException] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Slack$.html b/api/com/mediative/amadou/Slack$.html new file mode 100644 index 0000000..faebd72 --- /dev/null +++ b/api/com/mediative/amadou/Slack$.html @@ -0,0 +1,525 @@ + + + + Slack - com.mediative.amadou.Slack + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou

+

Slack

+ Related Docs: + class Slack + | package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Slack extends Serializable + +

+ +
Source
Slack.scala
+ Linear Supertypes +
Serializable, Serializable, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Slack
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  6. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + + case class + + + Payload(channel: String, text: String, username: String, icon_emoji: String, link_names: Boolean) extends Product with Serializable + +

    + + Permalink + + + +
  2. + + +

    + + + case class + + + PostException(msg: String) extends RuntimeException with Product with Serializable + +

    + + Permalink + + + +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Slack.html b/api/com/mediative/amadou/Slack.html new file mode 100644 index 0000000..1d3dc09 --- /dev/null +++ b/api/com/mediative/amadou/Slack.html @@ -0,0 +1,781 @@ + + + + Slack - com.mediative.amadou.Slack + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou

+

Slack

+ Related Docs: + object Slack + | package amadou +

+ + Permalink + + +
+ +

+ + + case class + + + Slack(url: String, channel: String, user: String, icon: String) extends Logging with Product with Serializable + +

+ +

Wrap the functionality to send messages to a Slack channel. +

Source
Slack.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, Logging, LazyLogging, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Slack
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. Logging
  7. LazyLogging
  8. AnyRef
  9. Any
  10. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + Slack(url: String, channel: String, user: String, icon: String) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Slack to + any2stringadd[Slack] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (Slack, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Slack to + ArrowAssoc[Slack] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + val + + + channel: String + +

    + + Permalink + + + +
  8. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  9. + + +

    + + + def + + + ensuring(cond: (Slack) ⇒ Boolean, msg: ⇒ Any): Slack + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Slack to + Ensuring[Slack] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (Slack) ⇒ Boolean): Slack + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Slack to + Ensuring[Slack] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Slack + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Slack to + Ensuring[Slack] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): Slack + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Slack to + Ensuring[Slack] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + implicit + val + + + formats: Formats { ... /* 2 definitions in type refinement */ } + +

    + + Permalink + + + +
  16. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Slack to + StringFormat[Slack] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  17. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + val + + + icon: String + +

    + + Permalink + + + +
  19. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  20. + + +

    + + + lazy val + + + logger: Logger + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    LazyLogging
    +
  21. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + post(message: String, icon: String = this.icon): Unit + +

    + + Permalink + + +

    Post the given message to a Slack channel.

    Post the given message to a Slack channel. +

    message

    the text of the message to send.

    icon

    optional icon for the message.

    +
  25. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + val + + + url: String + +

    + + Permalink + + + +
  27. + + +

    + + + val + + + user: String + +

    + + Permalink + + + +
  28. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + + def + + + [B](y: B): (Slack, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Slack to + ArrowAssoc[Slack] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from Logging

+
+

Inherited from LazyLogging

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + Slack to any2stringadd[Slack] +

+
+

Inherited by implicit conversion StringFormat from + Slack to StringFormat[Slack] +

+
+

Inherited by implicit conversion Ensuring from + Slack to Ensuring[Slack] +

+
+

Inherited by implicit conversion ArrowAssoc from + Slack to ArrowAssoc[Slack] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/SparkImplicits$$SparkColumnOps.html b/api/com/mediative/amadou/SparkImplicits$$SparkColumnOps.html new file mode 100644 index 0000000..728bb5f --- /dev/null +++ b/api/com/mediative/amadou/SparkImplicits$$SparkColumnOps.html @@ -0,0 +1,521 @@ + + + + SparkColumnOps - com.mediative.amadou.SparkImplicits.SparkColumnOps + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.SparkImplicits

+

SparkColumnOps

Related Doc: + package SparkImplicits +

+ + Permalink + + +
+ +

+ + implicit final + class + + + SparkColumnOps extends AnyVal + +

+ +

Helpers for working with Dataset columns. +

Source
SparkImplicits.scala
+ Linear Supertypes +
AnyVal, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SparkColumnOps
  2. AnyVal
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + SparkColumnOps(self: Column) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkColumnOps to + any2stringadd[SparkColumnOps] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SparkColumnOps, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkColumnOps to + ArrowAssoc[SparkColumnOps] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + ensuring(cond: (SparkColumnOps) ⇒ Boolean, msg: ⇒ Any): SparkColumnOps + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkColumnOps to + Ensuring[SparkColumnOps] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  8. + + +

    + + + def + + + ensuring(cond: (SparkColumnOps) ⇒ Boolean): SparkColumnOps + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkColumnOps to + Ensuring[SparkColumnOps] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SparkColumnOps + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkColumnOps to + Ensuring[SparkColumnOps] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean): SparkColumnOps + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkColumnOps to + Ensuring[SparkColumnOps] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkColumnOps to + StringFormat[SparkColumnOps] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  12. + + +

    + + + def + + + getClass(): Class[_ <: AnyVal] + +

    + + Permalink + + +
    Definition Classes
    AnyVal → Any
    +
  13. + + +

    + + + def + + + isDefined: Column + +

    + + Permalink + + +

    Filter out values which are null, empty or "null".

    Filter out values which are null, empty or "null". +

    Example: +
    1. dataset.filter($"UserId".isDefined)
    +
    +
  14. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  15. + + +

    + + + def + + + nullify: Column + +

    + + Permalink + + +

    Replace "null" string with NULL value.

    Replace "null" string with NULL value. +

    Example: +
    1. dataset.filter($"Description".nullify)
    +
    +
  16. + + +

    + + + val + + + self: Column + +

    + + Permalink + + + +
  17. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  18. + + +

    + + + def + + + [B](y: B): (SparkColumnOps, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkColumnOps to + ArrowAssoc[SparkColumnOps] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyVal

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + SparkColumnOps to any2stringadd[SparkColumnOps] +

+
+

Inherited by implicit conversion StringFormat from + SparkColumnOps to StringFormat[SparkColumnOps] +

+
+

Inherited by implicit conversion Ensuring from + SparkColumnOps to Ensuring[SparkColumnOps] +

+
+

Inherited by implicit conversion ArrowAssoc from + SparkColumnOps to ArrowAssoc[SparkColumnOps] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/SparkImplicits$.html b/api/com/mediative/amadou/SparkImplicits$.html new file mode 100644 index 0000000..e73027c --- /dev/null +++ b/api/com/mediative/amadou/SparkImplicits$.html @@ -0,0 +1,502 @@ + + + + SparkImplicits - com.mediative.amadou.SparkImplicits + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou

+

SparkImplicits

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + object + + + SparkImplicits + +

+ +
Source
SparkImplicits.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SparkImplicits
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + implicit final + class + + + SparkColumnOps extends AnyVal + +

    + + Permalink + + +

    Helpers for working with Dataset columns.

    +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/SparkJob$.html b/api/com/mediative/amadou/SparkJob$.html new file mode 100644 index 0000000..e757261 --- /dev/null +++ b/api/com/mediative/amadou/SparkJob$.html @@ -0,0 +1,501 @@ + + + + SparkJob - com.mediative.amadou.SparkJob + + + + + + + + + + + + + + + +
+ Object/Trait +

com.mediative.amadou

+

SparkJob

+ Related Docs: + trait SparkJob + | package amadou +

+ + Permalink + + +
+ +

+ + + object + + + SparkJob + +

+ +
Source
SparkJob.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SparkJob
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + val + + + MaxScheduledDates: Int + +

    + + Permalink + + +

    Maximum number of dates considered from a schedule.

    +
  5. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  7. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  8. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  9. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  10. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  13. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/SparkJob.html b/api/com/mediative/amadou/SparkJob.html new file mode 100644 index 0000000..0ec5865 --- /dev/null +++ b/api/com/mediative/amadou/SparkJob.html @@ -0,0 +1,762 @@ + + + + SparkJob - com.mediative.amadou.SparkJob + + + + + + + + + + + + + + + +
+ Trait/Object +

com.mediative.amadou

+

SparkJob

+ Related Docs: + object SparkJob + | package amadou +

+ + Permalink + + +
+ +

+ + + trait + + + SparkJob extends Logging + +

+ +

A Spark ETL job

Jobs have a schedule of dates which is filtered using job specific +logic and run in chronological order. For example, for jobs which run +each day and at end of month, we check if it ran correctly "today" +and if not we traverse if it ran for previous "month's end" etc., +until we find a completed run or we have traversed some magical max +number.

The schedule can be overridden by defining the start environment +variable with a date formatted as "yyyy-MM-dd". In this case the job +is only run the the specified date. +

Source
SparkJob.scala
+ Linear Supertypes +
Logging, LazyLogging, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SparkJob
  2. Logging
  3. LazyLogging
  4. AnyRef
  5. Any
  6. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + +
+

Abstract Value Members

+
  1. + + +

    + + abstract + def + + + shouldRunForDate(spark: SparkSession, date: DateInterval): Boolean + +

    + + Permalink + + + +
+
+ +
+

Concrete Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJob to + any2stringadd[SparkJob] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SparkJob, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJob to + ArrowAssoc[SparkJob] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (SparkJob) ⇒ Boolean, msg: ⇒ Any): SparkJob + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJob to + Ensuring[SparkJob] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (SparkJob) ⇒ Boolean): SparkJob + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJob to + Ensuring[SparkJob] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SparkJob + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJob to + Ensuring[SparkJob] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): SparkJob + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJob to + Ensuring[SparkJob] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJob to + StringFormat[SparkJob] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + + lazy val + + + logger: Logger + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    LazyLogging
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + def + + + run(spark: SparkSession, date: DateInterval): Unit + +

    + + Permalink + + + +
  24. + + +

    + + + def + + + stages: Stage[SparkSession, _] + +

    + + Permalink + + + +
  25. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  27. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + + def + + + [B](y: B): (SparkJob, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJob to + ArrowAssoc[SparkJob] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Logging

+
+

Inherited from LazyLogging

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + SparkJob to any2stringadd[SparkJob] +

+
+

Inherited by implicit conversion StringFormat from + SparkJob to StringFormat[SparkJob] +

+
+

Inherited by implicit conversion Ensuring from + SparkJob to Ensuring[SparkJob] +

+
+

Inherited by implicit conversion ArrowAssoc from + SparkJob to ArrowAssoc[SparkJob] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/SparkJobSuiteBase.html b/api/com/mediative/amadou/SparkJobSuiteBase.html new file mode 100644 index 0000000..02b4f6d --- /dev/null +++ b/api/com/mediative/amadou/SparkJobSuiteBase.html @@ -0,0 +1,1317 @@ + + + + SparkJobSuiteBase - com.mediative.amadou.SparkJobSuiteBase + + + + + + + + + + + + + + + +
+ Trait +

com.mediative.amadou

+

SparkJobSuiteBase

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + trait + + + SparkJobSuiteBase extends DatasetSuiteBase with BeforeAndAfterAll + +

+ +

Base class which provides an environment for running tasks. +

Self Type
SparkJobSuiteBase with Suite
Source
SparkJobSuiteBase.scala
+ Linear Supertypes +
DatasetSuiteBase, DatasetSuiteBaseLike, DataFrameSuiteBase, DataFrameSuiteBaseLike, Serializable, Serializable, SharedSparkContext, SparkContextProvider, BeforeAndAfterAll, SuiteMixin, TestSuite, TestSuiteLike, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SparkJobSuiteBase
  2. DatasetSuiteBase
  3. DatasetSuiteBaseLike
  4. DataFrameSuiteBase
  5. DataFrameSuiteBaseLike
  6. Serializable
  7. Serializable
  8. SharedSparkContext
  9. SparkContextProvider
  10. BeforeAndAfterAll
  11. SuiteMixin
  12. TestSuite
  13. TestSuiteLike
  14. AnyRef
  15. Any
  16. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + +
+

Abstract Value Members

+
  1. + + +

    + + abstract + def + + + expectedTestCount(filter: Filter): Int + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
  2. + + +

    + + abstract + def + + + nestedSuites: IndexedSeq[Suite] + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
  3. + + +

    + + abstract + def + + + rerunner: Option[String] + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
  4. + + +

    + + abstract + def + + + runNestedSuites(args: Args): Status + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    SuiteMixin
    +
  5. + + +

    + + abstract + def + + + runTest(testName: String, args: Args): Status + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    SuiteMixin
    +
  6. + + +

    + + abstract + def + + + runTests(testName: Option[String], args: Args): Status + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    SuiteMixin
    +
  7. + + +

    + + abstract + val + + + styleName: String + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
  8. + + +

    + + abstract + def + + + suiteId: String + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
  9. + + +

    + + abstract + def + + + suiteName: String + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
  10. + + +

    + + abstract + def + + + tags: Map[String, Set[String]] + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
  11. + + +

    + + abstract + def + + + testDataFor(testName: String, theConfigMap: ConfigMap): TestData + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
  12. + + +

    + + abstract + def + + + testNames: Set[String] + +

    + + Permalink + + +
    Definition Classes
    SuiteMixin
    +
+
+ +
+

Concrete Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJobSuiteBase to + any2stringadd[SparkJobSuiteBase] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SparkJobSuiteBase, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJobSuiteBase to + ArrowAssoc[SparkJobSuiteBase] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + + def + + + afterAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    DataFrameSuiteBase → SharedSparkContext → BeforeAndAfterAll
    +
  7. + + +

    + + + def + + + appID: String + +

    + + Permalink + + +
    Definition Classes
    SparkContextProvider
    +
  8. + + +

    + + + def + + + approxEquals(r1: Row, r2: Row, tol: Double): Boolean + +

    + + Permalink + + +
    Definition Classes
    DataFrameSuiteBaseLike
    +
  9. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  10. + + +

    + + + def + + + assert[U](message: String, expected: U, actual: U)(implicit CT: ClassTag[U]): Unit + +

    + + Permalink + + +
    Definition Classes
    TestSuite → TestSuiteLike
    +
  11. + + +

    + + + def + + + assert[U](expected: U, actual: U)(implicit CT: ClassTag[U]): Unit + +

    + + Permalink + + +
    Definition Classes
    TestSuite → TestSuiteLike
    +
  12. + + +

    + + + def + + + assertDataFrameApproximateEquals(expected: DataFrame, result: DataFrame, tol: Double): Unit + +

    + + Permalink + + +
    Definition Classes
    DataFrameSuiteBaseLike
    +
  13. + + +

    + + + def + + + assertDataFrameEquals(expected: DataFrame, result: DataFrame): Unit + +

    + + Permalink + + +
    Definition Classes
    DataFrameSuiteBaseLike
    +
  14. + + +

    + + + def + + + assertDatasetApproximateEquals[U](expected: Dataset[U], result: Dataset[U], tol: Double)(implicit UCT: ClassTag[U]): Unit + +

    + + Permalink + + +
    Definition Classes
    DatasetSuiteBaseLike
    +
  15. + + +

    + + + def + + + assertDatasetEquals[U](expected: Dataset[U], result: Dataset[U])(implicit UCT: ClassTag[U]): Unit + +

    + + Permalink + + +
    Definition Classes
    DatasetSuiteBaseLike
    +
  16. + + +

    + + + def + + + assertEmpty[U](arr: Array[U])(implicit CT: ClassTag[U]): Unit + +

    + + Permalink + + +
    Definition Classes
    TestSuite → TestSuiteLike
    +
  17. + + +

    + + + def + + + assertTrue(expected: Boolean): Unit + +

    + + Permalink + + +
    Definition Classes
    TestSuite → TestSuiteLike
    +
  18. + + +

    + + + def + + + beforeAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    SparkJobSuiteBase → DataFrameSuiteBase → SharedSparkContext → BeforeAndAfterAll
    +
  19. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + + def + + + conf: SparkConf + +

    + + Permalink + + +
    Definition Classes
    SparkContextProvider
    +
  21. + + +

    + + + val + + + config: typesafe.config.Config + +

    + + Permalink + + + +
  22. + + +

    + + + def + + + ensuring(cond: (SparkJobSuiteBase) ⇒ Boolean, msg: ⇒ Any): SparkJobSuiteBase + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJobSuiteBase to + Ensuring[SparkJobSuiteBase] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  23. + + +

    + + + def + + + ensuring(cond: (SparkJobSuiteBase) ⇒ Boolean): SparkJobSuiteBase + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJobSuiteBase to + Ensuring[SparkJobSuiteBase] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  24. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SparkJobSuiteBase + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJobSuiteBase to + Ensuring[SparkJobSuiteBase] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  25. + + +

    + + + def + + + ensuring(cond: Boolean): SparkJobSuiteBase + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJobSuiteBase to + Ensuring[SparkJobSuiteBase] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  26. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  27. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  28. + + +

    + + + val + + + fileSystem: FileSystem + +

    + + Permalink + + + +
  29. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  30. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJobSuiteBase to + StringFormat[SparkJobSuiteBase] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  31. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  32. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  33. + + +

    + + implicit + def + + + impSqlContext: SQLContext + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    DataFrameSuiteBaseLike
    +
  34. + + +

    + + + val + + + invokeBeforeAllAndAfterAllEvenIfNoTestsAreExpected: Boolean + +

    + + Permalink + + +
    Definition Classes
    BeforeAndAfterAll
    +
  35. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  36. + + +

    + + + val + + + maxUnequalRowsToShow: Int + +

    + + Permalink + + +
    Definition Classes
    DataFrameSuiteBaseLike
    +
  37. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  38. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  39. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  40. + + +

    + + + def + + + run(testName: Option[String], args: Args): Status + +

    + + Permalink + + +
    Definition Classes
    BeforeAndAfterAll → SuiteMixin
    +
  41. + + +

    + + + def + + + sc: SparkContext + +

    + + Permalink + + +
    Definition Classes
    SharedSparkContext → SparkContextProvider
    +
  42. + + +

    + + + def + + + setup(sc: SparkContext): Unit + +

    + + Permalink + + +
    Definition Classes
    SparkContextProvider
    +
  43. + + +

    + + + lazy val + + + spark: SparkSession + +

    + + Permalink + + +
    Definition Classes
    DataFrameSuiteBaseLike
    +
  44. + + +

    + + + def + + + sqlBeforeAllTestCases(): Unit + +

    + + Permalink + + +
    Definition Classes
    DataFrameSuiteBaseLike
    +
  45. + + +

    + + + lazy val + + + sqlContext: SQLContext + +

    + + Permalink + + +
    Definition Classes
    DataFrameSuiteBaseLike
    +
  46. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  47. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  48. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  49. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  50. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  51. + + +

    + + + def + + + [B](y: B): (SparkJobSuiteBase, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkJobSuiteBase to + ArrowAssoc[SparkJobSuiteBase] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from DatasetSuiteBase

+
+

Inherited from DatasetSuiteBaseLike

+
+

Inherited from DataFrameSuiteBase

+
+

Inherited from DataFrameSuiteBaseLike

+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from SharedSparkContext

+
+

Inherited from SparkContextProvider

+
+

Inherited from BeforeAndAfterAll

+
+

Inherited from SuiteMixin

+
+

Inherited from TestSuite

+
+

Inherited from TestSuiteLike

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + SparkJobSuiteBase to any2stringadd[SparkJobSuiteBase] +

+
+

Inherited by implicit conversion StringFormat from + SparkJobSuiteBase to StringFormat[SparkJobSuiteBase] +

+
+

Inherited by implicit conversion Ensuring from + SparkJobSuiteBase to Ensuring[SparkJobSuiteBase] +

+
+

Inherited by implicit conversion ArrowAssoc from + SparkJobSuiteBase to ArrowAssoc[SparkJobSuiteBase] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/SparkRunner$Context.html b/api/com/mediative/amadou/SparkRunner$Context.html new file mode 100644 index 0000000..bfa9f16 --- /dev/null +++ b/api/com/mediative/amadou/SparkRunner$Context.html @@ -0,0 +1,871 @@ + + + + Context - com.mediative.amadou.SparkRunner.Context + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.SparkRunner

+

Context

Related Doc: + package SparkRunner +

+ + Permalink + + +
+ +

+ + + class + + + Context[+I] extends Stage.Context[I] with monitoring.MessagingSystem.Context + +

+ +
Source
SparkRunner.scala
+ Linear Supertypes + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Context
  2. Context
  3. Context
  4. AnyRef
  5. Any
  6. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + Context(jobId: String, eventDate: DateInterval, job: Job, retryOptions: RetryOptions, spark: SparkSession, messaging: MessagingSystem, value: I) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + any2stringadd[Context[I]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (Context[I], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + ArrowAssoc[Context[I]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + val + + + date: DateInterval + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  9. + + +

    + + + def + + + duration: Long + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  10. + + +

    + + + def + + + ensuring(cond: (Context[I]) ⇒ Boolean, msg: ⇒ Any): Context[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + Ensuring[Context[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: (Context[I]) ⇒ Boolean): Context[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + Ensuring[Context[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Context[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + Ensuring[Context[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + + def + + + ensuring(cond: Boolean): Context[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + Ensuring[Context[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  14. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + + val + + + eventDate: DateInterval + +

    + + Permalink + + +
    Definition Classes
    ContextContext
    +
  17. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  18. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + StringFormat[Context[I]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  19. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  20. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  21. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  22. + + +

    + + + val + + + jobId: String + +

    + + Permalink + + +
    Definition Classes
    ContextContext
    +
  23. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + processId: String + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  27. + + +

    + + + def + + + run[T](stage: Stage[I, T], result: ⇒ T): Result[T] + +

    + + Permalink + + +
    Definition Classes
    ContextContext
    +
  28. + + +

    + + + val + + + spark: SparkSession + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  29. + + +

    + + + def + + + startTime: Long + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  30. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  31. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  32. + + +

    + + + val + + + value: I + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  33. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  34. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  35. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  36. + + +

    + + + def + + + withValue[U](value: U): Context[U] + +

    + + Permalink + + +
    Definition Classes
    ContextContext
    +
  37. + + +

    + + + def + + + [B](y: B): (Context[I], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + ArrowAssoc[Context[I]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Stage.Context[I]

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + Context[I] to any2stringadd[Context[I]] +

+
+

Inherited by implicit conversion StringFormat from + Context[I] to StringFormat[Context[I]] +

+
+

Inherited by implicit conversion Ensuring from + Context[I] to Ensuring[Context[I]] +

+
+

Inherited by implicit conversion ArrowAssoc from + Context[I] to ArrowAssoc[Context[I]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/SparkRunner.html b/api/com/mediative/amadou/SparkRunner.html new file mode 100644 index 0000000..18fbe8f --- /dev/null +++ b/api/com/mediative/amadou/SparkRunner.html @@ -0,0 +1,1374 @@ + + + + SparkRunner - com.mediative.amadou.SparkRunner + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou

+

SparkRunner

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + abstract + class + + + SparkRunner[Job <: SparkJob] extends Logging with ScheduleDsl with ConfigLoader + +

+ +
Source
SparkRunner.scala
+ Linear Supertypes +
ConfigLoader, FicusInstances, LocalDateReader, PeriodReader, ISOZonedDateTimeReader, BigNumberReaders, ConfigValueReader, TryReader, DurationReaders, ConfigReader, CollectionReaders, OptionReader, SymbolReader, StringReader, AnyValReaders, ArbitraryTypeReader, ScheduleDsl, Logging, LazyLogging, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SparkRunner
  2. ConfigLoader
  3. FicusInstances
  4. LocalDateReader
  5. PeriodReader
  6. ISOZonedDateTimeReader
  7. BigNumberReaders
  8. ConfigValueReader
  9. TryReader
  10. DurationReaders
  11. ConfigReader
  12. CollectionReaders
  13. OptionReader
  14. SymbolReader
  15. StringReader
  16. AnyValReaders
  17. ArbitraryTypeReader
  18. ScheduleDsl
  19. Logging
  20. LazyLogging
  21. AnyRef
  22. Any
  23. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + SparkRunner() + +

    + + Permalink + + + +
+
+ +
+

Type Members

+
  1. + + +

    + + + class + + + Context[+I] extends Stage.Context[I] with monitoring.MessagingSystem.Context + +

    + + Permalink + + + +
+
+ +
+

Abstract Value Members

+
  1. + + +

    + + abstract + def + + + createJob(config: Config): Job + +

    + + Permalink + + + +
  2. + + +

    + + abstract + def + + + jobName: String + +

    + + Permalink + + + +
  3. + + +

    + + abstract + def + + + schedule: Schedule + +

    + + Permalink + + + +
+
+ +
+

Concrete Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkRunner[Job] to + any2stringadd[SparkRunner[Job]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SparkRunner[Job], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkRunner[Job] to + ArrowAssoc[SparkRunner[Job]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + implicit macro + def + + + arbitraryTypeValueReader[T]: ValueReader[T] + +

    + + Permalink + + +
    Definition Classes
    ArbitraryTypeReader
    +
  7. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  8. + + +

    + + implicit + val + + + bigDecimalReader: ValueReader[BigDecimal] + +

    + + Permalink + + +
    Definition Classes
    BigNumberReaders
    +
  9. + + +

    + + implicit + val + + + bigIntReader: ValueReader[BigInt] + +

    + + Permalink + + +
    Definition Classes
    BigNumberReaders
    +
  10. + + +

    + + implicit + val + + + booleanValueReader: ValueReader[Boolean] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  11. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  12. + + +

    + + implicit + val + + + configValueReader: ValueReader[typesafe.config.Config] + +

    + + Permalink + + +
    Definition Classes
    ConfigReader
    +
  13. + + +

    + + implicit + val + + + configValueValueReader: ValueReader[ConfigValue] + +

    + + Permalink + + +
    Definition Classes
    ConfigValueReader
    +
  14. + + +

    + + + def + + + counter(name: String, help: String, labels: String*): Counter + +

    + + Permalink + + +

    Counters will be reset before each job run.

    Counters will be reset before each job run. +

    Attributes
    protected
    +
  15. + + +

    + + + def + + + daily: Schedule + +

    + + Permalink + + +
    Definition Classes
    ScheduleDsl
    +
  16. + + +

    + + implicit + val + + + doubleValueReader: ValueReader[Double] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  17. + + +

    + + + def + + + ensuring(cond: (SparkRunner[Job]) ⇒ Boolean, msg: ⇒ Any): SparkRunner[Job] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkRunner[Job] to + Ensuring[SparkRunner[Job]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  18. + + +

    + + + def + + + ensuring(cond: (SparkRunner[Job]) ⇒ Boolean): SparkRunner[Job] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkRunner[Job] to + Ensuring[SparkRunner[Job]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  19. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SparkRunner[Job] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkRunner[Job] to + Ensuring[SparkRunner[Job]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  20. + + +

    + + + def + + + ensuring(cond: Boolean): SparkRunner[Job] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkRunner[Job] to + Ensuring[SparkRunner[Job]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  21. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  23. + + +

    + + implicit + val + + + ficusConfigValueReader: ValueReader[FicusConfig] + +

    + + Permalink + + +
    Definition Classes
    ConfigReader
    +
  24. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  25. + + +

    + + implicit + def + + + finiteDurationReader: ValueReader[FiniteDuration] + +

    + + Permalink + + +
    Definition Classes
    DurationReaders
    +
  26. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkRunner[Job] to + StringFormat[SparkRunner[Job]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  27. + + +

    + + + def + + + gauge(name: String, help: String, labels: String*): Gauge + +

    + + Permalink + + +
    Attributes
    protected
    +
  28. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  29. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  30. + + +

    + + implicit + val + + + intValueReader: ValueReader[Int] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  31. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  32. + + +

    + + implicit + val + + + isoZonedDateTimeReader: ValueReader[ZonedDateTime] + +

    + + Permalink + + +
    Definition Classes
    ISOZonedDateTimeReader
    +
  33. + + +

    + + implicit + val + + + localDateReader: ValueReader[LocalDate] + +

    + + Permalink + + +
    Definition Classes
    LocalDateReader
    +
  34. + + +

    + + + lazy val + + + logger: Logger + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    LazyLogging
    +
  35. + + +

    + + implicit + val + + + longValueReader: ValueReader[Long] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  36. + + +

    + + + def + + + main(args: Array[String]): Unit + +

    + + Permalink + + + +
  37. + + +

    + + implicit + def + + + mapValueReader[A](implicit entryReader: ValueReader[A]): ValueReader[Map[String, A]] + +

    + + Permalink + + +
    Definition Classes
    CollectionReaders
    +
  38. + + +

    + + + def + + + monthly: Schedule + +

    + + Permalink + + +
    Definition Classes
    ScheduleDsl
    +
  39. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  40. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  41. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  42. + + +

    + + implicit + def + + + optionValueReader[A](implicit valueReader: ValueReader[A]): ValueReader[Option[A]] + +

    + + Permalink + + +
    Definition Classes
    OptionReader
    +
  43. + + +

    + + implicit + val + + + periodReader: ValueReader[Period] + +

    + + Permalink + + +
    Definition Classes
    PeriodReader
    +
  44. + + +

    + + implicit + val + + + propertiesValueReader: ValueReader[Properties] + +

    + + Permalink + + +

    Value reader for optionally loading properties from a file.

    Value reader for optionally loading properties from a file.

    When the named path does not exists an empty Properties instance is returned +

    Definition Classes
    ConfigLoader
    Example: +
    1. case class Database(url: String, properties: Properties)
    +
    +
  45. + + +

    + + + def + + + quarterly: Schedule + +

    + + Permalink + + +
    Definition Classes
    ScheduleDsl
    +
  46. + + +

    + + + def + + + recordsProcessed: Collector + +

    + + Permalink + + + +
  47. + + +

    + + + def + + + run(): Unit + +

    + + Permalink + + + +
  48. + + +

    + + implicit + val + + + stringValueReader: ValueReader[String] + +

    + + Permalink + + +
    Definition Classes
    StringReader
    +
  49. + + +

    + + implicit + val + + + symbolValueReader: ValueReader[Symbol] + +

    + + Permalink + + +
    Definition Classes
    SymbolReader
    +
  50. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  51. + + +

    + + implicit + def + + + toFicusConfig(config: Config): FicusConfig + +

    + + Permalink + + +
    Definition Classes
    ConfigLoader
    +
  52. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  53. + + +

    + + + def + + + today: Schedule + +

    + + Permalink + + +
    Definition Classes
    ScheduleDsl
    +
  54. + + +

    + + implicit + def + + + traversableReader[C[_], A](implicit entryReader: ValueReader[A], cbf: CanBuildFrom[Nothing, A, C[A]]): ValueReader[C[A]] + +

    + + Permalink + + +
    Definition Classes
    CollectionReaders
    +
  55. + + +

    + + implicit + def + + + tryValueReader[A](implicit valueReader: ValueReader[A]): ValueReader[Try[A]] + +

    + + Permalink + + +
    Definition Classes
    TryReader
    +
  56. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  57. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  58. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  59. + + +

    + + + def + + + yearly: Schedule + +

    + + Permalink + + +
    Definition Classes
    ScheduleDsl
    +
  60. + + +

    + + + def + + + [B](y: B): (SparkRunner[Job], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkRunner[Job] to + ArrowAssoc[SparkRunner[Job]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from ConfigLoader

+
+

Inherited from FicusInstances

+
+

Inherited from LocalDateReader

+
+

Inherited from PeriodReader

+
+

Inherited from ISOZonedDateTimeReader

+
+

Inherited from BigNumberReaders

+
+

Inherited from ConfigValueReader

+
+

Inherited from TryReader

+
+

Inherited from DurationReaders

+
+

Inherited from ConfigReader

+
+

Inherited from CollectionReaders

+
+

Inherited from OptionReader

+
+

Inherited from SymbolReader

+
+

Inherited from StringReader

+
+

Inherited from AnyValReaders

+
+

Inherited from ArbitraryTypeReader

+
+

Inherited from ScheduleDsl

+
+

Inherited from Logging

+
+

Inherited from LazyLogging

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + SparkRunner[Job] to any2stringadd[SparkRunner[Job]] +

+
+

Inherited by implicit conversion StringFormat from + SparkRunner[Job] to StringFormat[SparkRunner[Job]] +

+
+

Inherited by implicit conversion Ensuring from + SparkRunner[Job] to Ensuring[SparkRunner[Job]] +

+
+

Inherited by implicit conversion ArrowAssoc from + SparkRunner[Job] to ArrowAssoc[SparkRunner[Job]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Stage$$Context$.html b/api/com/mediative/amadou/Stage$$Context$.html new file mode 100644 index 0000000..4a45ec4 --- /dev/null +++ b/api/com/mediative/amadou/Stage$$Context$.html @@ -0,0 +1,501 @@ + + + + Context - com.mediative.amadou.Stage.Context + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou.Stage

+

Context

+ Related Docs: + class Context + | package Stage +

+ + Permalink + + +
+ +

+ + + object + + + Context + +

+ +
Source
Stage.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Context
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + def + + + apply(spark: SparkSession, date: DateInterval): Context[SparkSession] + +

    + + Permalink + + + +
  5. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  7. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  8. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  9. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  10. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  13. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Stage$$Context.html b/api/com/mediative/amadou/Stage$$Context.html new file mode 100644 index 0000000..6f735fc --- /dev/null +++ b/api/com/mediative/amadou/Stage$$Context.html @@ -0,0 +1,790 @@ + + + + Context - com.mediative.amadou.Stage.Context + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou.Stage

+

Context

+ Related Docs: + object Context + | package Stage +

+ + Permalink + + +
+ +

+ + abstract + class + + + Context[+I] extends AnyRef + +

+ +
Source
Stage.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Context
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + Context(spark: SparkSession, date: DateInterval, value: I) + +

    + + Permalink + + + +
+
+ + + +
+

Abstract Value Members

+
  1. + + +

    + + abstract + def + + + withValue[U](value: U): Context[U] + +

    + + Permalink + + + +
+
+ +
+

Concrete Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + any2stringadd[Context[I]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (Context[I], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + ArrowAssoc[Context[I]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + val + + + date: DateInterval + +

    + + Permalink + + + +
  9. + + +

    + + + def + + + ensuring(cond: (Context[I]) ⇒ Boolean, msg: ⇒ Any): Context[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + Ensuring[Context[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (Context[I]) ⇒ Boolean): Context[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + Ensuring[Context[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Context[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + Ensuring[Context[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): Context[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + Ensuring[Context[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  16. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + StringFormat[Context[I]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  17. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + def + + + run[T](stage: Stage[I, T], result: ⇒ T): Result[T] + +

    + + Permalink + + + +
  24. + + +

    + + + val + + + spark: SparkSession + +

    + + Permalink + + + +
  25. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  27. + + +

    + + + val + + + value: I + +

    + + Permalink + + + +
  28. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + + def + + + [B](y: B): (Context[I], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context[I] to + ArrowAssoc[Context[I]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + Context[I] to any2stringadd[Context[I]] +

+
+

Inherited by implicit conversion StringFormat from + Context[I] to StringFormat[Context[I]] +

+
+

Inherited by implicit conversion Ensuring from + Context[I] to Ensuring[Context[I]] +

+
+

Inherited by implicit conversion ArrowAssoc from + Context[I] to ArrowAssoc[Context[I]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Stage$$SequenceAllException.html b/api/com/mediative/amadou/Stage$$SequenceAllException.html new file mode 100644 index 0000000..e775101 --- /dev/null +++ b/api/com/mediative/amadou/Stage$$SequenceAllException.html @@ -0,0 +1,927 @@ + + + + SequenceAllException - com.mediative.amadou.Stage.SequenceAllException + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.Stage

+

SequenceAllException

Related Doc: + package Stage +

+ + Permalink + + +
+ +

+ + + case class + + + SequenceAllException[S, T](failures: Seq[(Stage[S, T], Throwable)]) extends Exception with Product with Serializable + +

+ +
Source
Stage.scala
+ Linear Supertypes +
Serializable, Product, Equals, Exception, Throwable, Serializable, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SequenceAllException
  2. Serializable
  3. Product
  4. Equals
  5. Exception
  6. Throwable
  7. Serializable
  8. AnyRef
  9. Any
  10. +
+
+ Implicitly
+
+
  1. by RichException
  2. by any2stringadd
  3. by StringFormat
  4. by Ensuring
  5. by ArrowAssoc
  6. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + SequenceAllException(failures: Seq[(Stage[S, T], Throwable)]) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + any2stringadd[SequenceAllException[S, T]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SequenceAllException[S, T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + ArrowAssoc[SequenceAllException[S, T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + addSuppressed(arg0: Throwable): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  7. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  8. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  9. + + +

    + + + def + + + ensuring(cond: (SequenceAllException[S, T]) ⇒ Boolean, msg: ⇒ Any): SequenceAllException[S, T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + Ensuring[SequenceAllException[S, T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (SequenceAllException[S, T]) ⇒ Boolean): SequenceAllException[S, T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + Ensuring[SequenceAllException[S, T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SequenceAllException[S, T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + Ensuring[SequenceAllException[S, T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): SequenceAllException[S, T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + Ensuring[SequenceAllException[S, T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + val + + + failures: Seq[(Stage[S, T], Throwable)] + +

    + + Permalink + + + +
  15. + + +

    + + + def + + + fillInStackTrace(): Throwable + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  16. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  17. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + StringFormat[SequenceAllException[S, T]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  18. + + +

    + + + def + + + getCause(): Throwable + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  19. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  20. + + +

    + + + def + + + getLocalizedMessage(): String + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  21. + + +

    + + + def + + + getMessage(): String + +

    + + Permalink + + +
    Definition Classes
    SequenceAllException → Throwable
    +
  22. + + +

    + + + def + + + getStackTrace(): Array[StackTraceElement] + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  23. + + +

    + + final + def + + + getSuppressed(): Array[Throwable] + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  24. + + +

    + + + def + + + initCause(arg0: Throwable): Throwable + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  25. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  26. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  27. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  28. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  29. + + +

    + + + def + + + printStackTrace(arg0: PrintWriter): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  30. + + +

    + + + def + + + printStackTrace(arg0: PrintStream): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  31. + + +

    + + + def + + + printStackTrace(): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  32. + + +

    + + + def + + + setStackTrace(arg0: Array[StackTraceElement]): Unit + +

    + + Permalink + + +
    Definition Classes
    Throwable
    +
  33. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  34. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    Throwable → AnyRef → Any
    +
  35. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  36. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  37. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  38. + + +

    + + + def + + + [B](y: B): (SequenceAllException[S, T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + ArrowAssoc[SequenceAllException[S, T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + +
+

Deprecated Value Members

+
  1. + + +

    + + + def + + + getStackTraceString: String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SequenceAllException[S, T] to + RichException performed by method RichException in scala.Predef. + +
    Definition Classes
    RichException
    Annotations
    + @deprecated + +
    Deprecated

    (Since version 2.11.0) Use Throwable#getStackTrace

    +
+
+
+ +
+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from Exception

+
+

Inherited from Throwable

+
+

Inherited from Serializable

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion RichException from + SequenceAllException[S, T] to RichException +

+
+

Inherited by implicit conversion any2stringadd from + SequenceAllException[S, T] to any2stringadd[SequenceAllException[S, T]] +

+
+

Inherited by implicit conversion StringFormat from + SequenceAllException[S, T] to StringFormat[SequenceAllException[S, T]] +

+
+

Inherited by implicit conversion Ensuring from + SequenceAllException[S, T] to Ensuring[SequenceAllException[S, T]] +

+
+

Inherited by implicit conversion ArrowAssoc from + SequenceAllException[S, T] to ArrowAssoc[SequenceAllException[S, T]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Stage$$SimpleContext.html b/api/com/mediative/amadou/Stage$$SimpleContext.html new file mode 100644 index 0000000..9b93f62 --- /dev/null +++ b/api/com/mediative/amadou/Stage$$SimpleContext.html @@ -0,0 +1,784 @@ + + + + SimpleContext - com.mediative.amadou.Stage.SimpleContext + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.Stage

+

SimpleContext

Related Doc: + package Stage +

+ + Permalink + + +
+ +

+ + + class + + + SimpleContext[+I] extends Context[I] + +

+ +
Source
Stage.scala
+ Linear Supertypes +
Context[I], AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SimpleContext
  2. Context
  3. AnyRef
  4. Any
  5. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + SimpleContext(spark: SparkSession, date: DateInterval, value: I) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SimpleContext[I] to + any2stringadd[SimpleContext[I]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SimpleContext[I], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SimpleContext[I] to + ArrowAssoc[SimpleContext[I]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + val + + + date: DateInterval + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  9. + + +

    + + + def + + + ensuring(cond: (SimpleContext[I]) ⇒ Boolean, msg: ⇒ Any): SimpleContext[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SimpleContext[I] to + Ensuring[SimpleContext[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (SimpleContext[I]) ⇒ Boolean): SimpleContext[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SimpleContext[I] to + Ensuring[SimpleContext[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SimpleContext[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SimpleContext[I] to + Ensuring[SimpleContext[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): SimpleContext[I] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SimpleContext[I] to + Ensuring[SimpleContext[I]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  16. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SimpleContext[I] to + StringFormat[SimpleContext[I]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  17. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + def + + + run[T](stage: Stage[I, T], result: ⇒ T): Result[T] + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  24. + + +

    + + + val + + + spark: SparkSession + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  25. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  27. + + +

    + + + val + + + value: I + +

    + + Permalink + + +
    Definition Classes
    Context
    +
  28. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + + def + + + withValue[U](value: U): SimpleContext[U] + +

    + + Permalink + + +
    Definition Classes
    SimpleContextContext
    +
  32. + + +

    + + + def + + + [B](y: B): (SimpleContext[I], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SimpleContext[I] to + ArrowAssoc[SimpleContext[I]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Context[I]

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + SimpleContext[I] to any2stringadd[SimpleContext[I]] +

+
+

Inherited by implicit conversion StringFormat from + SimpleContext[I] to StringFormat[SimpleContext[I]] +

+
+

Inherited by implicit conversion Ensuring from + SimpleContext[I] to Ensuring[SimpleContext[I]] +

+
+

Inherited by implicit conversion ArrowAssoc from + SimpleContext[I] to ArrowAssoc[SimpleContext[I]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Stage$.html b/api/com/mediative/amadou/Stage$.html new file mode 100644 index 0000000..a5c209e --- /dev/null +++ b/api/com/mediative/amadou/Stage$.html @@ -0,0 +1,693 @@ + + + + Stage - com.mediative.amadou.Stage + + + + + + + + + + + + + + + +
+ Object/Trait +

com.mediative.amadou

+

Stage

+ Related Docs: + trait Stage + | package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Stage + +

+ +
Source
Stage.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Stage
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + abstract + class + + + Context[+I] extends AnyRef + +

    + + Permalink + + + +
  2. + + +

    + + + type + + + Result[A] = Try[A] + +

    + + Permalink + + + +
  3. + + +

    + + + case class + + + SequenceAllException[S, T](failures: Seq[(Stage[S, T], Throwable)]) extends Exception with Product with Serializable + +

    + + Permalink + + + +
  4. + + +

    + + + class + + + SimpleContext[+I] extends Context[I] + +

    + + Permalink + + + +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + object + + + Context + +

    + + Permalink + + + +
  5. + + +

    + + + def + + + apply[S, T](stageName: String)(f: (Context[S]) ⇒ T): Stage[S, T] + +

    + + Permalink + + + +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  9. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  11. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  13. + + +

    + + + def + + + identity[T]: Stage[T, T] + +

    + + Permalink + + + +
  14. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  15. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  18. + + +

    + + + def + + + sequence[S, T](stages: Seq[Stage[S, T]]): Stage[S, Seq[T]] + +

    + + Permalink + + + +
  19. + + +

    + + + def + + + sequenceAll[S, T](stages: Seq[Stage[S, T]]): Stage[S, Seq[T]] + +

    + + Permalink + + +

    Combine multiple stages into a single stage which fails if any of them results +in a failure.

    +
  20. + + +

    + + + def + + + sink[T](name: String)(write: (Context[Dataset[T]]) ⇒ Unit): Stage[Dataset[T], Dataset[T]] + +

    + + Permalink + + + +
  21. + + +

    + + + def + + + source[T](name: String)(read: (Context[SparkSession]) ⇒ Dataset[T]): Stage[Any, Dataset[T]] + +

    + + Permalink + + +

    Read data from a data source.

    Read data from a data source.

    May be used anywhere in a for-expression to read from a data source. +

    +
  22. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  24. + + +

    + + + def + + + transform[S, T](name: String)(transform: (Context[Dataset[S]]) ⇒ Dataset[T]): Stage[Dataset[S], Dataset[T]] + +

    + + Permalink + + + +
  25. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Stage.html b/api/com/mediative/amadou/Stage.html new file mode 100644 index 0000000..1e5211d --- /dev/null +++ b/api/com/mediative/amadou/Stage.html @@ -0,0 +1,784 @@ + + + + Stage - com.mediative.amadou.Stage + + + + + + + + + + + + + + + +
+ Trait/Object +

com.mediative.amadou

+

Stage

+ Related Docs: + object Stage + | package amadou +

+ + Permalink + + +
+ +

+ + sealed + trait + + + Stage[-I, +T] extends AnyRef + +

+ +
Self Type
Stage[I, T]
Source
Stage.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Stage
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + +
+

Abstract Value Members

+
  1. + + +

    + + abstract + def + + + name: String + +

    + + Permalink + + + +
  2. + + +

    + + abstract + def + + + run(ctx: Context[I]): Result[T] + +

    + + Permalink + + + +
+
+ +
+

Concrete Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Stage[I, T] to + any2stringadd[Stage[I, T]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (Stage[I, T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Stage[I, T] to + ArrowAssoc[Stage[I, T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + + def + + + andThen[U](s: Stage[T, U]): Stage[I, U] + +

    + + Permalink + + + +
  7. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  8. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  9. + + +

    + + + def + + + ensuring(cond: (Stage[I, T]) ⇒ Boolean, msg: ⇒ Any): Stage[I, T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Stage[I, T] to + Ensuring[Stage[I, T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (Stage[I, T]) ⇒ Boolean): Stage[I, T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Stage[I, T] to + Ensuring[Stage[I, T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Stage[I, T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Stage[I, T] to + Ensuring[Stage[I, T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): Stage[I, T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Stage[I, T] to + Ensuring[Stage[I, T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  16. + + +

    + + + def + + + flatMap[U](f: (T) ⇒ Stage[T, U]): Stage[I, U] + +

    + + Permalink + + + +
  17. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Stage[I, T] to + StringFormat[Stage[I, T]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  18. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  20. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  21. + + +

    + + + def + + + map[U](f: (T) ⇒ U): Stage[I, U] + +

    + + Permalink + + + +
  22. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  27. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + + def + + + ~>[U](s: Stage[T, U]): Stage[I, U] + +

    + + Permalink + + + +
  31. + + +

    + + + def + + + [B](y: B): (Stage[I, T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Stage[I, T] to + ArrowAssoc[Stage[I, T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + Stage[I, T] to any2stringadd[Stage[I, T]] +

+
+

Inherited by implicit conversion StringFormat from + Stage[I, T] to StringFormat[Stage[I, T]] +

+
+

Inherited by implicit conversion Ensuring from + Stage[I, T] to Ensuring[Stage[I, T]] +

+
+

Inherited by implicit conversion ArrowAssoc from + Stage[I, T] to ArrowAssoc[Stage[I, T]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$$Friday$.html b/api/com/mediative/amadou/Week$$Friday$.html new file mode 100644 index 0000000..e0869ff --- /dev/null +++ b/api/com/mediative/amadou/Week$$Friday$.html @@ -0,0 +1,475 @@ + + + + Friday - com.mediative.amadou.Week.Friday + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Week

+

Friday

Related Doc: + package Week +

+ + Permalink + + +
+ +

+ + + object + + + Friday extends WeekDay with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, WeekDay, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Friday
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. WeekDay
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + val + + + id: Int + +

    + + Permalink + + +
    Definition Classes
    FridayWeekDay
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from WeekDay

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$$Monday$.html b/api/com/mediative/amadou/Week$$Monday$.html new file mode 100644 index 0000000..e1253a7 --- /dev/null +++ b/api/com/mediative/amadou/Week$$Monday$.html @@ -0,0 +1,475 @@ + + + + Monday - com.mediative.amadou.Week.Monday + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Week

+

Monday

Related Doc: + package Week +

+ + Permalink + + +
+ +

+ + + object + + + Monday extends WeekDay with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, WeekDay, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Monday
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. WeekDay
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + val + + + id: Int + +

    + + Permalink + + +
    Definition Classes
    MondayWeekDay
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from WeekDay

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$$Saturday$.html b/api/com/mediative/amadou/Week$$Saturday$.html new file mode 100644 index 0000000..6cf907b --- /dev/null +++ b/api/com/mediative/amadou/Week$$Saturday$.html @@ -0,0 +1,475 @@ + + + + Saturday - com.mediative.amadou.Week.Saturday + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Week

+

Saturday

Related Doc: + package Week +

+ + Permalink + + +
+ +

+ + + object + + + Saturday extends WeekDay with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, WeekDay, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Saturday
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. WeekDay
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + val + + + id: Int + +

    + + Permalink + + +
    Definition Classes
    SaturdayWeekDay
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from WeekDay

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$$Sunday$.html b/api/com/mediative/amadou/Week$$Sunday$.html new file mode 100644 index 0000000..5d19b1f --- /dev/null +++ b/api/com/mediative/amadou/Week$$Sunday$.html @@ -0,0 +1,475 @@ + + + + Sunday - com.mediative.amadou.Week.Sunday + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Week

+

Sunday

Related Doc: + package Week +

+ + Permalink + + +
+ +

+ + + object + + + Sunday extends WeekDay with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, WeekDay, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Sunday
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. WeekDay
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + val + + + id: Int + +

    + + Permalink + + +
    Definition Classes
    SundayWeekDay
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from WeekDay

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$$Thursday$.html b/api/com/mediative/amadou/Week$$Thursday$.html new file mode 100644 index 0000000..a5bd00b --- /dev/null +++ b/api/com/mediative/amadou/Week$$Thursday$.html @@ -0,0 +1,475 @@ + + + + Thursday - com.mediative.amadou.Week.Thursday + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Week

+

Thursday

Related Doc: + package Week +

+ + Permalink + + +
+ +

+ + + object + + + Thursday extends WeekDay with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, WeekDay, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Thursday
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. WeekDay
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + val + + + id: Int + +

    + + Permalink + + +
    Definition Classes
    ThursdayWeekDay
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from WeekDay

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$$Tuesday$.html b/api/com/mediative/amadou/Week$$Tuesday$.html new file mode 100644 index 0000000..39906ea --- /dev/null +++ b/api/com/mediative/amadou/Week$$Tuesday$.html @@ -0,0 +1,475 @@ + + + + Tuesday - com.mediative.amadou.Week.Tuesday + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Week

+

Tuesday

Related Doc: + package Week +

+ + Permalink + + +
+ +

+ + + object + + + Tuesday extends WeekDay with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, WeekDay, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Tuesday
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. WeekDay
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + val + + + id: Int + +

    + + Permalink + + +
    Definition Classes
    TuesdayWeekDay
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from WeekDay

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$$Wednesday$.html b/api/com/mediative/amadou/Week$$Wednesday$.html new file mode 100644 index 0000000..219fe66 --- /dev/null +++ b/api/com/mediative/amadou/Week$$Wednesday$.html @@ -0,0 +1,475 @@ + + + + Wednesday - com.mediative.amadou.Week.Wednesday + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.Week

+

Wednesday

Related Doc: + package Week +

+ + Permalink + + +
+ +

+ + + object + + + Wednesday extends WeekDay with Product with Serializable + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, WeekDay, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Wednesday
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. WeekDay
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + val + + + id: Int + +

    + + Permalink + + +
    Definition Classes
    WednesdayWeekDay
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from WeekDay

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$$WeekDay.html b/api/com/mediative/amadou/Week$$WeekDay.html new file mode 100644 index 0000000..be3551a --- /dev/null +++ b/api/com/mediative/amadou/Week$$WeekDay.html @@ -0,0 +1,700 @@ + + + + WeekDay - com.mediative.amadou.Week.WeekDay + + + + + + + + + + + + + + + +
+ Trait +

com.mediative.amadou.Week

+

WeekDay

Related Doc: + package Week +

+ + Permalink + + +
+ +

+ + sealed + trait + + + WeekDay extends AnyRef + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. WeekDay
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + +
+

Abstract Value Members

+
  1. + + +

    + + abstract + def + + + id: Int + +

    + + Permalink + + + +
+
+ +
+

Concrete Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from WeekDay to + any2stringadd[WeekDay] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (WeekDay, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from WeekDay to + ArrowAssoc[WeekDay] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (WeekDay) ⇒ Boolean, msg: ⇒ Any): WeekDay + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from WeekDay to + Ensuring[WeekDay] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (WeekDay) ⇒ Boolean): WeekDay + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from WeekDay to + Ensuring[WeekDay] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): WeekDay + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from WeekDay to + Ensuring[WeekDay] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): WeekDay + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from WeekDay to + Ensuring[WeekDay] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from WeekDay to + StringFormat[WeekDay] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  24. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  25. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + + def + + + [B](y: B): (WeekDay, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from WeekDay to + ArrowAssoc[WeekDay] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + WeekDay to any2stringadd[WeekDay] +

+
+

Inherited by implicit conversion StringFormat from + WeekDay to StringFormat[WeekDay] +

+
+

Inherited by implicit conversion Ensuring from + WeekDay to Ensuring[WeekDay] +

+
+

Inherited by implicit conversion ArrowAssoc from + WeekDay to ArrowAssoc[WeekDay] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Week$.html b/api/com/mediative/amadou/Week$.html new file mode 100644 index 0000000..ca2bc07 --- /dev/null +++ b/api/com/mediative/amadou/Week$.html @@ -0,0 +1,775 @@ + + + + Week - com.mediative.amadou.Week + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou

+

Week

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Week extends DateIntervalType + +

+ +

ISO 8601 week. Note that it has some counterintuitive behavior around new year. +For instance Monday 29 December 2008 is week 2009-W01, and Sunday 3 January 2010 is week 2009-W53-7 +This example was taken from from http://en.wikipedia.org/wiki/ISO_8601#Week_dates:

scala> Week(Day(2008, 12, 29))
+res1: DateInterval = 2009-W01
+scala> Week(Day(2010, 1, 3))
+res2: DateInterval = 2009-W53
+scala> Week(2009, 53, dayOfWeek = Week.Sunday).by(Day).last
+res3: DateInterval = 2010-01-03
Source
DateInterval.scala
+ Linear Supertypes +
DateIntervalType, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Week
  2. DateIntervalType
  3. AnyRef
  4. Any
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + sealed + trait + + + WeekDay extends AnyRef + +

    + + Permalink + + + +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + object + + + Friday extends WeekDay with Product with Serializable + +

    + + Permalink + + + +
  5. + + +

    + + + object + + + Monday extends WeekDay with Product with Serializable + +

    + + Permalink + + + +
  6. + + +

    + + + object + + + Saturday extends WeekDay with Product with Serializable + +

    + + Permalink + + + +
  7. + + +

    + + + object + + + Sunday extends WeekDay with Product with Serializable + +

    + + Permalink + + + +
  8. + + +

    + + + object + + + Thursday extends WeekDay with Product with Serializable + +

    + + Permalink + + + +
  9. + + +

    + + + object + + + Tuesday extends WeekDay with Product with Serializable + +

    + + Permalink + + + +
  10. + + +

    + + + object + + + Wednesday extends WeekDay with Product with Serializable + +

    + + Permalink + + + +
  11. + + +

    + + + def + + + apply(year: Int, week: Int, dayOfWeek: WeekDay = Monday): DateInterval + +

    + + Permalink + + + +
  12. + + +

    + + + def + + + apply(timestamp: Long): DateInterval + +

    + + Permalink + + +

    Represent the interval for a given timestamp using the specified +interval type.

    Represent the interval for a given timestamp using the specified +interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1.

    Example:

    scala> Day(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res1: String = 2015-05-07 00:00 +0000
    +scala> Month(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-01 00:00 +0000
    +scala> Year(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res3: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  13. + + +

    + + + def + + + apply(date: DateInterval): DateInterval + +

    + + Permalink + + +

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Example:

    scala> Day(1431000000000L)
    +res1: DateInterval = 2015-05-07
    +scala> Week(Day(1431000000000L))
    +res2: DateInterval = 2015-W19
    +scala> Month(Day(1431000000000L))
    +res3: DateInterval = 2015-05
    +scala> Quarter(1431000000000L)
    +res4: DateInterval = 2015-Q2
    +scala> Year(Day(1431000000000L))
    +res5: DateInterval = 2015
    +scala> Year(Day(1431000000000L)).format("yyyy-MM-dd HH:mm ZZ")
    +res6: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  14. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  15. + + +

    + + + val + + + calendarField: Int + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  16. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + + val + + + dateFormat: String + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  18. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  19. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  20. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  21. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  22. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  23. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  24. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  27. + + +

    + + + def + + + parse(input: String): Option[DateInterval] + +

    + + Permalink + + +

    Parse a timestamp into a date interval.

    Parse a timestamp into a date interval.

    Example:

    scala> Day.parse("2015-05-07")
    +res1: Option[DateInterval] = Some(2015-05-07)
    +scala> Day.parse("2015-05-07").get.format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-07 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  28. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  29. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  30. + + +

    + + + def + + + today: DateInterval + +

    + + Permalink + + +

    Represent the interval for today using the specified interval type.

    Represent the interval for today using the specified interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1. +

    Definition Classes
    DateIntervalType
    +
  31. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  32. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  33. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from DateIntervalType

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/Year$.html b/api/com/mediative/amadou/Year$.html new file mode 100644 index 0000000..c13f472 --- /dev/null +++ b/api/com/mediative/amadou/Year$.html @@ -0,0 +1,629 @@ + + + + Year - com.mediative.amadou.Year + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou

+

Year

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + + object + + + Year extends DateIntervalType + +

+ +
Source
DateInterval.scala
+ Linear Supertypes +
DateIntervalType, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Year
  2. DateIntervalType
  3. AnyRef
  4. Any
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + def + + + apply(year: Int): DateInterval + +

    + + Permalink + + + +
  5. + + +

    + + + def + + + apply(timestamp: Long): DateInterval + +

    + + Permalink + + +

    Represent the interval for a given timestamp using the specified +interval type.

    Represent the interval for a given timestamp using the specified +interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1.

    Example:

    scala> Day(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res1: String = 2015-05-07 00:00 +0000
    +scala> Month(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-01 00:00 +0000
    +scala> Year(1431000000000L).format("yyyy-MM-dd HH:mm ZZ")
    +res3: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  6. + + +

    + + + def + + + apply(date: DateInterval): DateInterval + +

    + + Permalink + + +

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Create a date interval with a different type and truncate lower +resolution date fields accordingly.

    Example:

    scala> Day(1431000000000L)
    +res1: DateInterval = 2015-05-07
    +scala> Week(Day(1431000000000L))
    +res2: DateInterval = 2015-W19
    +scala> Month(Day(1431000000000L))
    +res3: DateInterval = 2015-05
    +scala> Quarter(1431000000000L)
    +res4: DateInterval = 2015-Q2
    +scala> Year(Day(1431000000000L))
    +res5: DateInterval = 2015
    +scala> Year(Day(1431000000000L)).format("yyyy-MM-dd HH:mm ZZ")
    +res6: String = 2015-01-01 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  7. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  8. + + +

    + + + val + + + calendarField: Int + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  9. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  10. + + +

    + + + val + + + dateFormat: String + +

    + + Permalink + + +
    Definition Classes
    DateIntervalType
    +
  11. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  12. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  13. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  14. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  17. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  18. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  19. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + + def + + + parse(input: String): Option[DateInterval] + +

    + + Permalink + + +

    Parse a timestamp into a date interval.

    Parse a timestamp into a date interval.

    Example:

    scala> Day.parse("2015-05-07")
    +res1: Option[DateInterval] = Some(2015-05-07)
    +scala> Day.parse("2015-05-07").get.format("yyyy-MM-dd HH:mm ZZ")
    +res2: String = 2015-05-07 00:00 +0000
    Definition Classes
    DateIntervalType
    +
  21. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  23. + + +

    + + + def + + + today: DateInterval + +

    + + Permalink + + +

    Represent the interval for today using the specified interval type.

    Represent the interval for today using the specified interval type.

    This will truncate lower resolution date fields to their initial +value, for example for months the day of month field is set to 1. +

    Definition Classes
    DateIntervalType
    +
  24. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  25. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from DateIntervalType

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/BigQueryTable$$PartitionStrategy.html b/api/com/mediative/amadou/bigquery/BigQueryTable$$PartitionStrategy.html new file mode 100644 index 0000000..fd772e2 --- /dev/null +++ b/api/com/mediative/amadou/bigquery/BigQueryTable$$PartitionStrategy.html @@ -0,0 +1,688 @@ + + + + PartitionStrategy - com.mediative.amadou.bigquery.BigQueryTable.PartitionStrategy + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.bigquery.BigQueryTable

+

PartitionStrategy

Related Doc: + package BigQueryTable +

+ + Permalink + + +
+ +

+ + + case class + + + PartitionStrategy(mapper: PartitionMapper) extends Product with Serializable + +

+ +
Source
BigQueryTable.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. PartitionStrategy
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + PartitionStrategy(mapper: PartitionMapper) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PartitionStrategy to + any2stringadd[PartitionStrategy] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (PartitionStrategy, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PartitionStrategy to + ArrowAssoc[PartitionStrategy] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (PartitionStrategy) ⇒ Boolean, msg: ⇒ Any): PartitionStrategy + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PartitionStrategy to + Ensuring[PartitionStrategy] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (PartitionStrategy) ⇒ Boolean): PartitionStrategy + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PartitionStrategy to + Ensuring[PartitionStrategy] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): PartitionStrategy + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PartitionStrategy to + Ensuring[PartitionStrategy] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): PartitionStrategy + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PartitionStrategy to + Ensuring[PartitionStrategy] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  14. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PartitionStrategy to + StringFormat[PartitionStrategy] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  15. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  17. + + +

    + + + val + + + mapper: PartitionMapper + +

    + + Permalink + + + +
  18. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  19. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + + def + + + partitionSuffix(date: DateInterval): String + +

    + + Permalink + + + +
  22. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  24. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  25. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + + def + + + [B](y: B): (PartitionStrategy, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PartitionStrategy to + ArrowAssoc[PartitionStrategy] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + PartitionStrategy to any2stringadd[PartitionStrategy] +

+
+

Inherited by implicit conversion StringFormat from + PartitionStrategy to StringFormat[PartitionStrategy] +

+
+

Inherited by implicit conversion Ensuring from + PartitionStrategy to Ensuring[PartitionStrategy] +

+
+

Inherited by implicit conversion ArrowAssoc from + PartitionStrategy to ArrowAssoc[PartitionStrategy] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/BigQueryTable$.html b/api/com/mediative/amadou/bigquery/BigQueryTable$.html new file mode 100644 index 0000000..c718f2f --- /dev/null +++ b/api/com/mediative/amadou/bigquery/BigQueryTable$.html @@ -0,0 +1,576 @@ + + + + BigQueryTable - com.mediative.amadou.bigquery.BigQueryTable + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou.bigquery

+

BigQueryTable

+ Related Docs: + class BigQueryTable + | package bigquery +

+ + Permalink + + +
+ +

+ + + object + + + BigQueryTable extends Serializable + +

+ +
Source
BigQueryTable.scala
+ Linear Supertypes +
Serializable, Serializable, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. BigQueryTable
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  6. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + + type + + + PartitionMapper = (DateInterval) ⇒ DateInterval + +

    + + Permalink + + + +
  2. + + +

    + + + case class + + + PartitionStrategy(mapper: PartitionMapper) extends Product with Serializable + +

    + + Permalink + + + +
  3. + + +

    + + + type + + + Reference = TableReference + +

    + + Permalink + + + +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + val + + + PartitionByDay: PartitionStrategy + +

    + + Permalink + + + +
  5. + + +

    + + + val + + + PartitionByMonth: PartitionStrategy + +

    + + Permalink + + + +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  9. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  11. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  13. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  14. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  18. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  21. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/BigQueryTable.html b/api/com/mediative/amadou/bigquery/BigQueryTable.html new file mode 100644 index 0000000..6da4511 --- /dev/null +++ b/api/com/mediative/amadou/bigquery/BigQueryTable.html @@ -0,0 +1,799 @@ + + + + BigQueryTable - com.mediative.amadou.bigquery.BigQueryTable + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou.bigquery

+

BigQueryTable

+ Related Docs: + object BigQueryTable + | package bigquery +

+ + Permalink + + +
+ +

+ + + case class + + + BigQueryTable(project: String, dataset: String, table: String, partitionBy: Option[PartitionStrategy] = None) extends Product with Serializable + +

+ +

Holds information about how to load data into BigQuery.

Example:

scala> val date = com.mediative.amadou.Day(2016, 9, 7)
+scala> val table = BigQueryTable("company_bi", "finance", "billing")
+scala> table.referenceFor(date)
+res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing}
+scala> table.partitionedByDay.referenceFor(date)
+res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing20160907}
+scala> table.partitionedByMonth.referenceFor(date)
+res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing20160901}
Source
BigQueryTable.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. BigQueryTable
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + BigQueryTable(project: String, dataset: String, table: String, partitionBy: Option[PartitionStrategy] = None) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryTable to + any2stringadd[BigQueryTable] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (BigQueryTable, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryTable to + ArrowAssoc[BigQueryTable] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + val + + + dataset: String + +

    + + Permalink + + + +
  9. + + +

    + + + def + + + ensuring(cond: (BigQueryTable) ⇒ Boolean, msg: ⇒ Any): BigQueryTable + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryTable to + Ensuring[BigQueryTable] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (BigQueryTable) ⇒ Boolean): BigQueryTable + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryTable to + Ensuring[BigQueryTable] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): BigQueryTable + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryTable to + Ensuring[BigQueryTable] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): BigQueryTable + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryTable to + Ensuring[BigQueryTable] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryTable to + StringFormat[BigQueryTable] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  18. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  19. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + + val + + + partitionBy: Option[PartitionStrategy] + +

    + + Permalink + + + +
  22. + + +

    + + + def + + + partitionedByDay: BigQueryTable + +

    + + Permalink + + + +
  23. + + +

    + + + def + + + partitionedByMonth: BigQueryTable + +

    + + Permalink + + + +
  24. + + +

    + + + val + + + project: String + +

    + + Permalink + + + +
  25. + + +

    + + + def + + + reference(): Reference + +

    + + Permalink + + + +
  26. + + +

    + + + def + + + referenceFor(date: DateInterval): Reference + +

    + + Permalink + + + +
  27. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  28. + + +

    + + + val + + + table: String + +

    + + Permalink + + + +
  29. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  32. + + +

    + + + def + + + [B](y: B): (BigQueryTable, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryTable to + ArrowAssoc[BigQueryTable] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + BigQueryTable to any2stringadd[BigQueryTable] +

+
+

Inherited by implicit conversion StringFormat from + BigQueryTable to StringFormat[BigQueryTable] +

+
+

Inherited by implicit conversion Ensuring from + BigQueryTable to Ensuring[BigQueryTable] +

+
+

Inherited by implicit conversion ArrowAssoc from + BigQueryTable to ArrowAssoc[BigQueryTable] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/GoogleAuthentication$$CustomHttpRequestInitializer.html b/api/com/mediative/amadou/bigquery/GoogleAuthentication$$CustomHttpRequestInitializer.html new file mode 100644 index 0000000..4bc655b --- /dev/null +++ b/api/com/mediative/amadou/bigquery/GoogleAuthentication$$CustomHttpRequestInitializer.html @@ -0,0 +1,716 @@ + + + + CustomHttpRequestInitializer - com.mediative.amadou.bigquery.GoogleAuthentication.CustomHttpRequestInitializer + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.bigquery.GoogleAuthentication

+

CustomHttpRequestInitializer

Related Doc: + package GoogleAuthentication +

+ + Permalink + + +
+ +

+ + + class + + + CustomHttpRequestInitializer extends HttpRequestInitializer + +

+ +
Source
GoogleAuthentication.scala
+ Linear Supertypes +
HttpRequestInitializer, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. CustomHttpRequestInitializer
  2. HttpRequestInitializer
  3. AnyRef
  4. Any
  5. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + CustomHttpRequestInitializer(wrapped: HttpRequestInitializer) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from CustomHttpRequestInitializer to + any2stringadd[CustomHttpRequestInitializer] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (CustomHttpRequestInitializer, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from CustomHttpRequestInitializer to + ArrowAssoc[CustomHttpRequestInitializer] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (CustomHttpRequestInitializer) ⇒ Boolean, msg: ⇒ Any): CustomHttpRequestInitializer + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from CustomHttpRequestInitializer to + Ensuring[CustomHttpRequestInitializer] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (CustomHttpRequestInitializer) ⇒ Boolean): CustomHttpRequestInitializer + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from CustomHttpRequestInitializer to + Ensuring[CustomHttpRequestInitializer] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): CustomHttpRequestInitializer + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from CustomHttpRequestInitializer to + Ensuring[CustomHttpRequestInitializer] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): CustomHttpRequestInitializer + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from CustomHttpRequestInitializer to + Ensuring[CustomHttpRequestInitializer] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from CustomHttpRequestInitializer to + StringFormat[CustomHttpRequestInitializer] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + def + + + initialize(httpRequest: HttpRequest): Unit + +

    + + Permalink + + +
    Definition Classes
    CustomHttpRequestInitializer → HttpRequestInitializer
    +
  19. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  25. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + + def + + + [B](y: B): (CustomHttpRequestInitializer, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from CustomHttpRequestInitializer to + ArrowAssoc[CustomHttpRequestInitializer] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from HttpRequestInitializer

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + CustomHttpRequestInitializer to any2stringadd[CustomHttpRequestInitializer] +

+
+

Inherited by implicit conversion StringFormat from + CustomHttpRequestInitializer to StringFormat[CustomHttpRequestInitializer] +

+
+

Inherited by implicit conversion Ensuring from + CustomHttpRequestInitializer to Ensuring[CustomHttpRequestInitializer] +

+
+

Inherited by implicit conversion ArrowAssoc from + CustomHttpRequestInitializer to ArrowAssoc[CustomHttpRequestInitializer] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/GoogleAuthentication$$Dbm$.html b/api/com/mediative/amadou/bigquery/GoogleAuthentication$$Dbm$.html new file mode 100644 index 0000000..ab4b49b --- /dev/null +++ b/api/com/mediative/amadou/bigquery/GoogleAuthentication$$Dbm$.html @@ -0,0 +1,475 @@ + + + + Dbm - com.mediative.amadou.bigquery.GoogleAuthentication.Dbm + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.bigquery.GoogleAuthentication

+

Dbm

Related Doc: + package GoogleAuthentication +

+ + Permalink + + +
+ +

+ + + object + + + Dbm extends GoogleAuthentication with Product with Serializable + +

+ +
Source
GoogleAuthentication.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, GoogleAuthentication, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Dbm
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. GoogleAuthentication
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  11. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  12. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + val + + + scopes: String* + +

    + + Permalink + + +
    Definition Classes
    GoogleAuthentication
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from GoogleAuthentication

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/GoogleAuthentication$.html b/api/com/mediative/amadou/bigquery/GoogleAuthentication$.html new file mode 100644 index 0000000..9b7c4b5 --- /dev/null +++ b/api/com/mediative/amadou/bigquery/GoogleAuthentication$.html @@ -0,0 +1,572 @@ + + + + GoogleAuthentication - com.mediative.amadou.bigquery.GoogleAuthentication + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou.bigquery

+

GoogleAuthentication

+ Related Docs: + class GoogleAuthentication + | package bigquery +

+ + Permalink + + +
+ +

+ + + object + + + GoogleAuthentication + +

+ +
Source
GoogleAuthentication.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. GoogleAuthentication
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + + class + + + CustomHttpRequestInitializer extends HttpRequestInitializer + +

    + + Permalink + + + +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + object + + + Dbm extends GoogleAuthentication with Product with Serializable + +

    + + Permalink + + + +
  5. + + +

    + + + lazy val + + + HTTP_TRANSPORT: NetHttpTransport + +

    + + Permalink + + + +
  6. + + +

    + + + lazy val + + + JSON_FACTORY: JacksonFactory + +

    + + Permalink + + + +
  7. + + +

    + + + def + + + apply(auth: GoogleAuthentication, spark: SparkSession): HttpRequestInitializer + +

    + + Permalink + + + +
  8. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  9. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  10. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  11. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  13. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  16. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  18. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  19. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  21. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  22. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  23. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/GoogleAuthentication.html b/api/com/mediative/amadou/bigquery/GoogleAuthentication.html new file mode 100644 index 0000000..1a5e163 --- /dev/null +++ b/api/com/mediative/amadou/bigquery/GoogleAuthentication.html @@ -0,0 +1,699 @@ + + + + GoogleAuthentication - com.mediative.amadou.bigquery.GoogleAuthentication + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou.bigquery

+

GoogleAuthentication

+ Related Docs: + object GoogleAuthentication + | package bigquery +

+ + Permalink + + +
+ +

+ + sealed abstract + class + + + GoogleAuthentication extends AnyRef + +

+ +
Source
GoogleAuthentication.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. GoogleAuthentication
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from GoogleAuthentication to + any2stringadd[GoogleAuthentication] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (GoogleAuthentication, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from GoogleAuthentication to + ArrowAssoc[GoogleAuthentication] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (GoogleAuthentication) ⇒ Boolean, msg: ⇒ Any): GoogleAuthentication + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from GoogleAuthentication to + Ensuring[GoogleAuthentication] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (GoogleAuthentication) ⇒ Boolean): GoogleAuthentication + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from GoogleAuthentication to + Ensuring[GoogleAuthentication] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): GoogleAuthentication + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from GoogleAuthentication to + Ensuring[GoogleAuthentication] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): GoogleAuthentication + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from GoogleAuthentication to + Ensuring[GoogleAuthentication] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from GoogleAuthentication to + StringFormat[GoogleAuthentication] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + + val + + + scopes: String* + +

    + + Permalink + + + +
  23. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  25. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + + def + + + [B](y: B): (GoogleAuthentication, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from GoogleAuthentication to + ArrowAssoc[GoogleAuthentication] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + GoogleAuthentication to any2stringadd[GoogleAuthentication] +

+
+

Inherited by implicit conversion StringFormat from + GoogleAuthentication to StringFormat[GoogleAuthentication] +

+
+

Inherited by implicit conversion Ensuring from + GoogleAuthentication to Ensuring[GoogleAuthentication] +

+
+

Inherited by implicit conversion ArrowAssoc from + GoogleAuthentication to ArrowAssoc[GoogleAuthentication] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/package$$BigQueryDataset.html b/api/com/mediative/amadou/bigquery/package$$BigQueryDataset.html new file mode 100644 index 0000000..7526c9e --- /dev/null +++ b/api/com/mediative/amadou/bigquery/package$$BigQueryDataset.html @@ -0,0 +1,766 @@ + + + + BigQueryDataset - com.mediative.amadou.bigquery.BigQueryDataset + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.bigquery

+

BigQueryDataset

Related Doc: + package bigquery +

+ + Permalink + + +
+ +

+ + implicit + class + + + BigQueryDataset[T] extends AnyRef + +

+ +

Enhanced version of DataFrame with BigQuery support. +

Source
package.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. BigQueryDataset
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + BigQueryDataset(self: Dataset[T]) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryDataset[T] to + any2stringadd[BigQueryDataset[T]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (BigQueryDataset[T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryDataset[T] to + ArrowAssoc[BigQueryDataset[T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + val + + + bq: BigQueryClient + +

    + + Permalink + + + +
  8. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  9. + + +

    + + + val + + + conf: Configuration + +

    + + Permalink + + + +
  10. + + +

    + + + def + + + ensuring(cond: (BigQueryDataset[T]) ⇒ Boolean, msg: ⇒ Any): BigQueryDataset[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryDataset[T] to + Ensuring[BigQueryDataset[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: (BigQueryDataset[T]) ⇒ Boolean): BigQueryDataset[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryDataset[T] to + Ensuring[BigQueryDataset[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): BigQueryDataset[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryDataset[T] to + Ensuring[BigQueryDataset[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + + def + + + ensuring(cond: Boolean): BigQueryDataset[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryDataset[T] to + Ensuring[BigQueryDataset[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  14. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  17. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryDataset[T] to + StringFormat[BigQueryDataset[T]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  18. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  20. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  21. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + saveAsBigQueryTable(tableRef: TableReference, writeDisposition: WriteDisposition.Value, createDisposition: CreateDisposition.Value): Unit + +

    + + Permalink + + +

    Save a DataFrame to a BigQuery table.

    +
  25. + + +

    + + + val + + + sqlContext: SQLContext + +

    + + Permalink + + + +
  26. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  27. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  28. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + + def + + + [B](y: B): (BigQueryDataset[T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQueryDataset[T] to + ArrowAssoc[BigQueryDataset[T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + BigQueryDataset[T] to any2stringadd[BigQueryDataset[T]] +

+
+

Inherited by implicit conversion StringFormat from + BigQueryDataset[T] to StringFormat[BigQueryDataset[T]] +

+
+

Inherited by implicit conversion Ensuring from + BigQueryDataset[T] to Ensuring[BigQueryDataset[T]] +

+
+

Inherited by implicit conversion ArrowAssoc from + BigQueryDataset[T] to ArrowAssoc[BigQueryDataset[T]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/package$$BigQuerySparkSession.html b/api/com/mediative/amadou/bigquery/package$$BigQuerySparkSession.html new file mode 100644 index 0000000..bc0bfa7 --- /dev/null +++ b/api/com/mediative/amadou/bigquery/package$$BigQuerySparkSession.html @@ -0,0 +1,869 @@ + + + + BigQuerySparkSession - com.mediative.amadou.bigquery.BigQuerySparkSession + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.bigquery

+

BigQuerySparkSession

Related Doc: + package bigquery +

+ + Permalink + + +
+ +

+ + implicit + class + + + BigQuerySparkSession extends AnyRef + +

+ +

Enhanced version of SparkSession with BigQuery support. +

Source
package.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. BigQuerySparkSession
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + BigQuerySparkSession(self: SparkSession) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQuerySparkSession to + any2stringadd[BigQuerySparkSession] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (BigQuerySparkSession, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQuerySparkSession to + ArrowAssoc[BigQuerySparkSession] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + lazy val + + + bq: BigQueryClient + +

    + + Permalink + + + +
  8. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  9. + + +

    + + + val + + + conf: Configuration + +

    + + Permalink + + + +
  10. + + +

    + + + def + + + ensuring(cond: (BigQuerySparkSession) ⇒ Boolean, msg: ⇒ Any): BigQuerySparkSession + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQuerySparkSession to + Ensuring[BigQuerySparkSession] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: (BigQuerySparkSession) ⇒ Boolean): BigQuerySparkSession + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQuerySparkSession to + Ensuring[BigQuerySparkSession] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): BigQuerySparkSession + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQuerySparkSession to + Ensuring[BigQuerySparkSession] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + + def + + + ensuring(cond: Boolean): BigQuerySparkSession + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQuerySparkSession to + Ensuring[BigQuerySparkSession] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  14. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  17. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQuerySparkSession to + StringFormat[BigQuerySparkSession] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  18. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  20. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  21. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + readBigQueryCSVExtract[T](url: HdfsUrl, dateFormat: String = BQ_CSV_DATE_FORMAT)(implicit arg0: Encoder[T]): Seq[T] + +

    + + Permalink + + + +
  25. + + +

    + + + def + + + readBigQueryCSVExtract[T](url: String, dateFormat: String)(implicit arg0: Encoder[T]): Seq[T] + +

    + + Permalink + + +

    Reads a CSV extract of a BigQuery table.

    +
  26. + + +

    + + + val + + + sc: SparkContext + +

    + + Permalink + + + +
  27. + + +

    + + + def + + + setBigQueryDatasetLocation(location: String): Unit + +

    + + Permalink + + +

    Set BigQuery dataset location, e.g.

    Set BigQuery dataset location, e.g. US, EU. +

    +
  28. + + +

    + + + def + + + setBigQueryGcsBucket(gcsBucket: String): Unit + +

    + + Permalink + + +

    Set GCS bucket for temporary BigQuery files.

    +
  29. + + +

    + + + def + + + setBigQueryProjectId(projectId: String): Unit + +

    + + Permalink + + +

    Set GCP project ID for BigQuery.

    +
  30. + + +

    + + + def + + + setGcpJsonKeyFile(jsonKeyFile: String): Unit + +

    + + Permalink + + +

    Set GCP JSON key file.

    +
  31. + + +

    + + + def + + + setGcpPk12KeyFile(pk12KeyFile: String): Unit + +

    + + Permalink + + +

    Set GCP pk12 key file.

    +
  32. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  33. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  34. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  35. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  36. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  37. + + +

    + + + def + + + [B](y: B): (BigQuerySparkSession, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from BigQuerySparkSession to + ArrowAssoc[BigQuerySparkSession] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + BigQuerySparkSession to any2stringadd[BigQuerySparkSession] +

+
+

Inherited by implicit conversion StringFormat from + BigQuerySparkSession to StringFormat[BigQuerySparkSession] +

+
+

Inherited by implicit conversion Ensuring from + BigQuerySparkSession to Ensuring[BigQuerySparkSession] +

+
+

Inherited by implicit conversion ArrowAssoc from + BigQuerySparkSession to ArrowAssoc[BigQuerySparkSession] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/package$$CreateDisposition$.html b/api/com/mediative/amadou/bigquery/package$$CreateDisposition$.html new file mode 100644 index 0000000..f3e19ea --- /dev/null +++ b/api/com/mediative/amadou/bigquery/package$$CreateDisposition$.html @@ -0,0 +1,769 @@ + + + + CreateDisposition - com.mediative.amadou.bigquery.CreateDisposition + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.bigquery

+

CreateDisposition

Related Doc: + package bigquery +

+ + Permalink + + +
+ +

+ + + object + + + CreateDisposition extends Enumeration + +

+ +
Source
package.scala
+ Linear Supertypes +
Enumeration, Serializable, Serializable, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. CreateDisposition
  2. Enumeration
  3. Serializable
  4. Serializable
  5. AnyRef
  6. Any
  7. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + + class + + + Val extends Value with Serializable + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    Annotations
    + @SerialVersionUID() + +
    +
  2. + + +

    + + abstract + class + + + Value extends Ordered[Value] with Serializable + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    Annotations
    + @SerialVersionUID() + +
    +
  3. + + +

    + + + class + + + ValueSet extends AbstractSet[Value] with SortedSet[Value] with SortedSetLike[Value, ValueSet] with Serializable + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + + val + + + CREATE_IF_NEEDED: Value + +

    + + Permalink + + + +
  5. + + +

    + + + val + + + CREATE_NEVER: Value + +

    + + Permalink + + + +
  6. + + +

    + + final + def + + + Value(i: Int, name: String): Value + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  7. + + +

    + + final + def + + + Value(name: String): Value + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  8. + + +

    + + final + def + + + Value(i: Int): Value + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  9. + + +

    + + final + def + + + Value: Value + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  10. + + +

    + + final + def + + + apply(x: Int): Value + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
  11. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + final + def + + + maxId: Int + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + + var + + + nextId: Int + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  22. + + +

    + + + var + + + nextName: Iterator[String] + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  23. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + + def + + + readResolve(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  26. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  27. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    Enumeration → AnyRef → Any
    +
  28. + + +

    + + + def + + + values: ValueSet + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
  29. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  32. + + +

    + + final + def + + + withName(s: String): Value + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
+
+ + + + +
+ +
+
+

Inherited from Enumeration

+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/package$$TableNotFound$.html b/api/com/mediative/amadou/bigquery/package$$TableNotFound$.html new file mode 100644 index 0000000..2d512db --- /dev/null +++ b/api/com/mediative/amadou/bigquery/package$$TableNotFound$.html @@ -0,0 +1,499 @@ + + + + TableNotFound - com.mediative.amadou.bigquery.TableNotFound + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.bigquery

+

TableNotFound

Related Doc: + package bigquery +

+ + Permalink + + +
+ +

+ + + object + + + TableNotFound + +

+ +
Source
package.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. TableNotFound
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + unapply(error: Throwable): Option[ErrorInfo] + +

    + + Permalink + + + +
  18. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/package$$WriteDisposition$.html b/api/com/mediative/amadou/bigquery/package$$WriteDisposition$.html new file mode 100644 index 0000000..78070ec --- /dev/null +++ b/api/com/mediative/amadou/bigquery/package$$WriteDisposition$.html @@ -0,0 +1,786 @@ + + + + WriteDisposition - com.mediative.amadou.bigquery.WriteDisposition + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.bigquery

+

WriteDisposition

Related Doc: + package bigquery +

+ + Permalink + + +
+ +

+ + + object + + + WriteDisposition extends Enumeration + +

+ +
Source
package.scala
+ Linear Supertypes +
Enumeration, Serializable, Serializable, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. WriteDisposition
  2. Enumeration
  3. Serializable
  4. Serializable
  5. AnyRef
  6. Any
  7. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + + class + + + Val extends Value with Serializable + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    Annotations
    + @SerialVersionUID() + +
    +
  2. + + +

    + + abstract + class + + + Value extends Ordered[Value] with Serializable + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    Annotations
    + @SerialVersionUID() + +
    +
  3. + + +

    + + + class + + + ValueSet extends AbstractSet[Value] with SortedSet[Value] with SortedSetLike[Value, ValueSet] with Serializable + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + Value(i: Int, name: String): Value + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  5. + + +

    + + final + def + + + Value(name: String): Value + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  6. + + +

    + + final + def + + + Value(i: Int): Value + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  7. + + +

    + + final + def + + + Value: Value + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  8. + + +

    + + + val + + + WRITE_APPEND: Value + +

    + + Permalink + + + +
  9. + + +

    + + + val + + + WRITE_EMPTY: Value + +

    + + Permalink + + + +
  10. + + +

    + + + val + + + WRITE_TRUNCATE: Value + +

    + + Permalink + + + +
  11. + + +

    + + final + def + + + apply(x: Int): Value + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
  12. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  13. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  14. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  17. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  20. + + +

    + + final + def + + + maxId: Int + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
  21. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + + var + + + nextId: Int + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  23. + + +

    + + + var + + + nextName: Iterator[String] + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  24. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + readResolve(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    Enumeration
    +
  27. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  28. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    Enumeration → AnyRef → Any
    +
  29. + + +

    + + + def + + + values: ValueSet + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
  30. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  32. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  33. + + +

    + + final + def + + + withName(s: String): Value + +

    + + Permalink + + +
    Definition Classes
    Enumeration
    +
+
+ + + + +
+ +
+
+

Inherited from Enumeration

+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/bigquery/package.html b/api/com/mediative/amadou/bigquery/package.html new file mode 100644 index 0000000..e5b3bed --- /dev/null +++ b/api/com/mediative/amadou/bigquery/package.html @@ -0,0 +1,692 @@ + + + + bigquery - com.mediative.amadou.bigquery + + + + + + + + + + + + + + + +
+ Package +

com.mediative.amadou

+

bigquery

+ + Permalink + + +
+ +

+ + + package + + + bigquery + +

+ +
Source
package.scala
+ Linear Supertypes +
FicusInstances, LocalDateReader, PeriodReader, ISOZonedDateTimeReader, BigNumberReaders, ConfigValueReader, TryReader, DurationReaders, ConfigReader, CollectionReaders, OptionReader, SymbolReader, StringReader, AnyValReaders, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. bigquery
  2. FicusInstances
  3. LocalDateReader
  4. PeriodReader
  5. ISOZonedDateTimeReader
  6. BigNumberReaders
  7. ConfigValueReader
  8. TryReader
  9. DurationReaders
  10. ConfigReader
  11. CollectionReaders
  12. OptionReader
  13. SymbolReader
  14. StringReader
  15. AnyValReaders
  16. AnyRef
  17. Any
  18. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + implicit + class + + + BigQueryDataset[T] extends AnyRef + +

    + + Permalink + + +

    Enhanced version of DataFrame with BigQuery support.

    +
  2. + + +

    + + implicit + class + + + BigQuerySparkSession extends AnyRef + +

    + + Permalink + + +

    Enhanced version of SparkSession with BigQuery support.

    +
  3. + + +

    + + + case class + + + BigQueryTable(project: String, dataset: String, table: String, partitionBy: Option[PartitionStrategy] = None) extends Product with Serializable + +

    + + Permalink + + +

    Holds information about how to load data into BigQuery.

    Holds information about how to load data into BigQuery.

    Example:

    scala> val date = com.mediative.amadou.Day(2016, 9, 7)
    +scala> val table = BigQueryTable("company_bi", "finance", "billing")
    +scala> table.referenceFor(date)
    +res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing}
    +scala> table.partitionedByDay.referenceFor(date)
    +res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing20160907}
    +scala> table.partitionedByMonth.referenceFor(date)
    +res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing20160901}
    +
  4. + + +

    + + sealed abstract + class + + + GoogleAuthentication extends AnyRef + +

    + + Permalink + + + +
+
+ + + +
+

Value Members

+
  1. + + +

    + + + val + + + BQ_CSV_DATE_FORMAT: String + +

    + + Permalink + + + +
  2. + + +

    + + + object + + + BigQueryTable extends Serializable + +

    + + Permalink + + + +
  3. + + +

    + + + object + + + CreateDisposition extends Enumeration + +

    + + Permalink + + + +
  4. + + +

    + + + object + + + GoogleAuthentication + +

    + + Permalink + + + +
  5. + + +

    + + + object + + + TableNotFound + +

    + + Permalink + + + +
  6. + + +

    + + + object + + + WriteDisposition extends Enumeration + +

    + + Permalink + + + +
  7. + + +

    + + implicit + val + + + bigDecimalReader: ValueReader[BigDecimal] + +

    + + Permalink + + +
    Definition Classes
    BigNumberReaders
    +
  8. + + +

    + + implicit + val + + + bigIntReader: ValueReader[BigInt] + +

    + + Permalink + + +
    Definition Classes
    BigNumberReaders
    +
  9. + + +

    + + implicit + val + + + booleanValueReader: ValueReader[Boolean] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  10. + + +

    + + implicit + val + + + configValueReader: ValueReader[typesafe.config.Config] + +

    + + Permalink + + +
    Definition Classes
    ConfigReader
    +
  11. + + +

    + + implicit + val + + + configValueValueReader: ValueReader[ConfigValue] + +

    + + Permalink + + +
    Definition Classes
    ConfigValueReader
    +
  12. + + +

    + + implicit + val + + + doubleValueReader: ValueReader[Double] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  13. + + +

    + + implicit + val + + + ficusConfigValueReader: ValueReader[FicusConfig] + +

    + + Permalink + + +
    Definition Classes
    ConfigReader
    +
  14. + + +

    + + implicit + def + + + finiteDurationReader: ValueReader[FiniteDuration] + +

    + + Permalink + + +
    Definition Classes
    DurationReaders
    +
  15. + + +

    + + implicit + val + + + intValueReader: ValueReader[Int] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  16. + + +

    + + implicit + val + + + isoZonedDateTimeReader: ValueReader[ZonedDateTime] + +

    + + Permalink + + +
    Definition Classes
    ISOZonedDateTimeReader
    +
  17. + + +

    + + implicit + val + + + localDateReader: ValueReader[LocalDate] + +

    + + Permalink + + +
    Definition Classes
    LocalDateReader
    +
  18. + + +

    + + implicit + val + + + longValueReader: ValueReader[Long] + +

    + + Permalink + + +
    Definition Classes
    AnyValReaders
    +
  19. + + +

    + + implicit + def + + + mapValueReader[A](implicit entryReader: ValueReader[A]): ValueReader[Map[String, A]] + +

    + + Permalink + + +
    Definition Classes
    CollectionReaders
    +
  20. + + +

    + + implicit + def + + + optionValueReader[A](implicit valueReader: ValueReader[A]): ValueReader[Option[A]] + +

    + + Permalink + + +
    Definition Classes
    OptionReader
    +
  21. + + +

    + + implicit + val + + + periodReader: ValueReader[Period] + +

    + + Permalink + + +
    Definition Classes
    PeriodReader
    +
  22. + + +

    + + implicit + val + + + stringValueReader: ValueReader[String] + +

    + + Permalink + + +
    Definition Classes
    StringReader
    +
  23. + + +

    + + implicit + val + + + symbolValueReader: ValueReader[Symbol] + +

    + + Permalink + + +
    Definition Classes
    SymbolReader
    +
  24. + + +

    + + + def + + + tableHasDataForDate(spark: SparkSession, table: TableReference, date: Date, column: String): Boolean + +

    + + Permalink + + + +
  25. + + +

    + + implicit + def + + + traversableReader[C[_], A](implicit entryReader: ValueReader[A], cbf: CanBuildFrom[Nothing, A, C[A]]): ValueReader[C[A]] + +

    + + Permalink + + +
    Definition Classes
    CollectionReaders
    +
  26. + + +

    + + implicit + def + + + tryValueReader[A](implicit valueReader: ValueReader[A]): ValueReader[Try[A]] + +

    + + Permalink + + +
    Definition Classes
    TryReader
    +
  27. + + +

    + + implicit + val + + + valueReader: ValueReader[PartitionStrategy] + +

    + + Permalink + + + +
+
+ + + + +
+ +
+
+

Inherited from FicusInstances

+
+

Inherited from LocalDateReader

+
+

Inherited from PeriodReader

+
+

Inherited from ISOZonedDateTimeReader

+
+

Inherited from BigNumberReaders

+
+

Inherited from ConfigValueReader

+
+

Inherited from TryReader

+
+

Inherited from DurationReaders

+
+

Inherited from ConfigReader

+
+

Inherited from CollectionReaders

+
+

Inherited from OptionReader

+
+

Inherited from SymbolReader

+
+

Inherited from StringReader

+
+

Inherited from AnyValReaders

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/Complete$.html b/api/com/mediative/amadou/monitoring/Complete$.html new file mode 100644 index 0000000..0afa3a7 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/Complete$.html @@ -0,0 +1,475 @@ + + + + Complete - com.mediative.amadou.monitoring.Complete + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.monitoring

+

Complete

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + + object + + + Complete extends StateRecord with Product with Serializable + +

+ +
Source
Events.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, StateRecord, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Complete
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. StateRecord
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + identifier: String + +

    + + Permalink + + +
    Definition Classes
    StateRecord
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from StateRecord

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/Failed$.html b/api/com/mediative/amadou/monitoring/Failed$.html new file mode 100644 index 0000000..814f741 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/Failed$.html @@ -0,0 +1,475 @@ + + + + Failed - com.mediative.amadou.monitoring.Failed + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.monitoring

+

Failed

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + + object + + + Failed extends StateRecord with Product with Serializable + +

+ +
Source
Events.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, StateRecord, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Failed
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. StateRecord
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + identifier: String + +

    + + Permalink + + +
    Definition Classes
    StateRecord
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from StateRecord

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/KafkaMessagingSystem$.html b/api/com/mediative/amadou/monitoring/KafkaMessagingSystem$.html new file mode 100644 index 0000000..87d2728 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/KafkaMessagingSystem$.html @@ -0,0 +1,501 @@ + + + + KafkaMessagingSystem - com.mediative.amadou.monitoring.KafkaMessagingSystem + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou.monitoring

+

KafkaMessagingSystem

+ Related Docs: + class KafkaMessagingSystem + | package monitoring +

+ + Permalink + + +
+ +

+ + + object + + + KafkaMessagingSystem + +

+ +
Source
KafkaMessagingSystem.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. KafkaMessagingSystem
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + + def + + + readProperties(config: typesafe.config.Config): Properties + +

    + + Permalink + + + +
  16. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/KafkaMessagingSystem.html b/api/com/mediative/amadou/monitoring/KafkaMessagingSystem.html new file mode 100644 index 0000000..1d7c1e1 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/KafkaMessagingSystem.html @@ -0,0 +1,892 @@ + + + + KafkaMessagingSystem - com.mediative.amadou.monitoring.KafkaMessagingSystem + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou.monitoring

+

KafkaMessagingSystem

+ Related Docs: + object KafkaMessagingSystem + | package monitoring +

+ + Permalink + + +
+ +

+ + + class + + + KafkaMessagingSystem extends MessagingSystem with Logging + +

+ +
Source
KafkaMessagingSystem.scala
+ Linear Supertypes +
Logging, LazyLogging, MessagingSystem, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. KafkaMessagingSystem
  2. Logging
  3. LazyLogging
  4. MessagingSystem
  5. AnyRef
  6. Any
  7. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + KafkaMessagingSystem(config: typesafe.config.Config) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from KafkaMessagingSystem to + any2stringadd[KafkaMessagingSystem] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (KafkaMessagingSystem, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from KafkaMessagingSystem to + ArrowAssoc[KafkaMessagingSystem] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (KafkaMessagingSystem) ⇒ Boolean, msg: ⇒ Any): KafkaMessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from KafkaMessagingSystem to + Ensuring[KafkaMessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (KafkaMessagingSystem) ⇒ Boolean): KafkaMessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from KafkaMessagingSystem to + Ensuring[KafkaMessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): KafkaMessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from KafkaMessagingSystem to + Ensuring[KafkaMessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): KafkaMessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from KafkaMessagingSystem to + Ensuring[KafkaMessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from KafkaMessagingSystem to + StringFormat[KafkaMessagingSystem] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + + lazy val + + + logger: Logger + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    LazyLogging
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + def + + + publish(topic: String, message: String): Unit + +

    + + Permalink + + +
    Definition Classes
    KafkaMessagingSystemMessagingSystem
    +
  24. + + +

    + + + def + + + publishMetrics(context: Context, stage: String, metrics: Map[String, Double]): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  25. + + +

    + + + def + + + publishProcessComplete(context: Context): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  26. + + +

    + + + def + + + publishProcessFailed(context: Context, failure: Throwable): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  27. + + +

    + + + def + + + publishProcessStarting(context: Context): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  28. + + +

    + + + def + + + publishStageComplete(context: Context, stage: String, message: String = ""): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  29. + + +

    + + + def + + + publishStageFailed(context: Context, stage: String, failure: Throwable): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  30. + + +

    + + + def + + + publishStageRetrying(context: Context, stage: String): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  31. + + +

    + + + def + + + publishStageStarting(context: Context, stage: String, message: String = ""): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  32. + + +

    + + + def + + + stop(): Unit + +

    + + Permalink + + +
    Definition Classes
    KafkaMessagingSystemMessagingSystem
    +
  33. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  34. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  35. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  36. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  37. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  38. + + +

    + + + def + + + [B](y: B): (KafkaMessagingSystem, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from KafkaMessagingSystem to + ArrowAssoc[KafkaMessagingSystem] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Logging

+
+

Inherited from LazyLogging

+
+

Inherited from MessagingSystem

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + KafkaMessagingSystem to any2stringadd[KafkaMessagingSystem] +

+
+

Inherited by implicit conversion StringFormat from + KafkaMessagingSystem to StringFormat[KafkaMessagingSystem] +

+
+

Inherited by implicit conversion Ensuring from + KafkaMessagingSystem to Ensuring[KafkaMessagingSystem] +

+
+

Inherited by implicit conversion ArrowAssoc from + KafkaMessagingSystem to ArrowAssoc[KafkaMessagingSystem] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/MessagingSystem$$Context.html b/api/com/mediative/amadou/monitoring/MessagingSystem$$Context.html new file mode 100644 index 0000000..c3cb02c --- /dev/null +++ b/api/com/mediative/amadou/monitoring/MessagingSystem$$Context.html @@ -0,0 +1,768 @@ + + + + Context - com.mediative.amadou.monitoring.MessagingSystem.Context + + + + + + + + + + + + + + + +
+ Trait +

com.mediative.amadou.monitoring.MessagingSystem

+

Context

Related Doc: + package MessagingSystem +

+ + Permalink + + +
+ +

+ + + trait + + + Context extends AnyRef + +

+ +
Source
MessagingSystem.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Context
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + +
+

Abstract Value Members

+
  1. + + +

    + + abstract + def + + + eventDate: DateInterval + +

    + + Permalink + + + +
  2. + + +

    + + abstract + def + + + jobId: String + +

    + + Permalink + + + +
+
+ +
+

Concrete Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context to + any2stringadd[Context] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (Context, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context to + ArrowAssoc[Context] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + duration: Long + +

    + + Permalink + + + +
  9. + + +

    + + + def + + + ensuring(cond: (Context) ⇒ Boolean, msg: ⇒ Any): Context + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context to + Ensuring[Context] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (Context) ⇒ Boolean): Context + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context to + Ensuring[Context] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): Context + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context to + Ensuring[Context] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): Context + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context to + Ensuring[Context] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  15. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  16. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context to + StringFormat[Context] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  17. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  19. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + def + + + processId: String + +

    + + Permalink + + + +
  24. + + +

    + + + def + + + startTime: Long + +

    + + Permalink + + + +
  25. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  26. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  27. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + + def + + + [B](y: B): (Context, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from Context to + ArrowAssoc[Context] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + Context to any2stringadd[Context] +

+
+

Inherited by implicit conversion StringFormat from + Context to StringFormat[Context] +

+
+

Inherited by implicit conversion Ensuring from + Context to Ensuring[Context] +

+
+

Inherited by implicit conversion ArrowAssoc from + Context to ArrowAssoc[Context] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/MessagingSystem$.html b/api/com/mediative/amadou/monitoring/MessagingSystem$.html new file mode 100644 index 0000000..e48a7f2 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/MessagingSystem$.html @@ -0,0 +1,521 @@ + + + + MessagingSystem - com.mediative.amadou.monitoring.MessagingSystem + + + + + + + + + + + + + + + +
+ Object/Class +

com.mediative.amadou.monitoring

+

MessagingSystem

+ Related Docs: + class MessagingSystem + | package monitoring +

+ + Permalink + + +
+ +

+ + + object + + + MessagingSystem + +

+ +
Source
MessagingSystem.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. MessagingSystem
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + + trait + + + Context extends AnyRef + +

    + + Permalink + + + +
+
+ + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + + def + + + create(config: typesafe.config.Config): Logging with MessagingSystem + +

    + + Permalink + + + +
  7. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  8. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  9. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  10. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  11. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  12. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  13. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  17. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  19. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  20. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/MessagingSystem.html b/api/com/mediative/amadou/monitoring/MessagingSystem.html new file mode 100644 index 0000000..44e985d --- /dev/null +++ b/api/com/mediative/amadou/monitoring/MessagingSystem.html @@ -0,0 +1,875 @@ + + + + MessagingSystem - com.mediative.amadou.monitoring.MessagingSystem + + + + + + + + + + + + + + + +
+ Class/Object +

com.mediative.amadou.monitoring

+

MessagingSystem

+ Related Docs: + object MessagingSystem + | package monitoring +

+ + Permalink + + +
+ +

+ + abstract + class + + + MessagingSystem extends AnyRef + +

+ +
Source
MessagingSystem.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. MessagingSystem
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + MessagingSystem() + +

    + + Permalink + + + +
+
+ + + +
+

Abstract Value Members

+
  1. + + +

    + + abstract + def + + + publish(topic: String, message: String): Unit + +

    + + Permalink + + + +
+
+ +
+

Concrete Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MessagingSystem to + any2stringadd[MessagingSystem] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (MessagingSystem, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MessagingSystem to + ArrowAssoc[MessagingSystem] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (MessagingSystem) ⇒ Boolean, msg: ⇒ Any): MessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MessagingSystem to + Ensuring[MessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (MessagingSystem) ⇒ Boolean): MessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MessagingSystem to + Ensuring[MessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): MessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MessagingSystem to + Ensuring[MessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): MessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MessagingSystem to + Ensuring[MessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MessagingSystem to + StringFormat[MessagingSystem] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + + def + + + publishMetrics(context: Context, stage: String, metrics: Map[String, Double]): Unit + +

    + + Permalink + + + +
  23. + + +

    + + + def + + + publishProcessComplete(context: Context): Unit + +

    + + Permalink + + + +
  24. + + +

    + + + def + + + publishProcessFailed(context: Context, failure: Throwable): Unit + +

    + + Permalink + + + +
  25. + + +

    + + + def + + + publishProcessStarting(context: Context): Unit + +

    + + Permalink + + + +
  26. + + +

    + + + def + + + publishStageComplete(context: Context, stage: String, message: String = ""): Unit + +

    + + Permalink + + + +
  27. + + +

    + + + def + + + publishStageFailed(context: Context, stage: String, failure: Throwable): Unit + +

    + + Permalink + + + +
  28. + + +

    + + + def + + + publishStageRetrying(context: Context, stage: String): Unit + +

    + + Permalink + + + +
  29. + + +

    + + + def + + + publishStageStarting(context: Context, stage: String, message: String = ""): Unit + +

    + + Permalink + + + +
  30. + + +

    + + + def + + + stop(): Unit + +

    + + Permalink + + + +
  31. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  32. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  33. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  34. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  35. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  36. + + +

    + + + def + + + [B](y: B): (MessagingSystem, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MessagingSystem to + ArrowAssoc[MessagingSystem] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + MessagingSystem to any2stringadd[MessagingSystem] +

+
+

Inherited by implicit conversion StringFormat from + MessagingSystem to StringFormat[MessagingSystem] +

+
+

Inherited by implicit conversion Ensuring from + MessagingSystem to Ensuring[MessagingSystem] +

+
+

Inherited by implicit conversion ArrowAssoc from + MessagingSystem to ArrowAssoc[MessagingSystem] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/MetricsEvent.html b/api/com/mediative/amadou/monitoring/MetricsEvent.html new file mode 100644 index 0000000..f0f015b --- /dev/null +++ b/api/com/mediative/amadou/monitoring/MetricsEvent.html @@ -0,0 +1,739 @@ + + + + MetricsEvent - com.mediative.amadou.monitoring.MetricsEvent + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.monitoring

+

MetricsEvent

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + + case class + + + MetricsEvent(jobId: String, processId: String, stage: String, timestamp: Long, message: Map[String, Double]) extends Product with Serializable + +

+ +
Source
Events.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. MetricsEvent
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + MetricsEvent(jobId: String, processId: String, stage: String, timestamp: Long, message: Map[String, Double]) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MetricsEvent to + any2stringadd[MetricsEvent] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (MetricsEvent, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MetricsEvent to + ArrowAssoc[MetricsEvent] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (MetricsEvent) ⇒ Boolean, msg: ⇒ Any): MetricsEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MetricsEvent to + Ensuring[MetricsEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (MetricsEvent) ⇒ Boolean): MetricsEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MetricsEvent to + Ensuring[MetricsEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): MetricsEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MetricsEvent to + Ensuring[MetricsEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): MetricsEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MetricsEvent to + Ensuring[MetricsEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  14. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MetricsEvent to + StringFormat[MetricsEvent] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  15. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  16. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  17. + + +

    + + + val + + + jobId: String + +

    + + Permalink + + + +
  18. + + +

    + + + val + + + message: Map[String, Double] + +

    + + Permalink + + + +
  19. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  20. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + + val + + + processId: String + +

    + + Permalink + + + +
  23. + + +

    + + + val + + + stage: String + +

    + + Permalink + + + +
  24. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  25. + + +

    + + + val + + + timestamp: Long + +

    + + Permalink + + + +
  26. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + + def + + + [B](y: B): (MetricsEvent, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from MetricsEvent to + ArrowAssoc[MetricsEvent] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + MetricsEvent to any2stringadd[MetricsEvent] +

+
+

Inherited by implicit conversion StringFormat from + MetricsEvent to StringFormat[MetricsEvent] +

+
+

Inherited by implicit conversion Ensuring from + MetricsEvent to Ensuring[MetricsEvent] +

+
+

Inherited by implicit conversion ArrowAssoc from + MetricsEvent to ArrowAssoc[MetricsEvent] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/PrintMessagingSystem.html b/api/com/mediative/amadou/monitoring/PrintMessagingSystem.html new file mode 100644 index 0000000..6b50627 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/PrintMessagingSystem.html @@ -0,0 +1,890 @@ + + + + PrintMessagingSystem - com.mediative.amadou.monitoring.PrintMessagingSystem + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.monitoring

+

PrintMessagingSystem

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + + class + + + PrintMessagingSystem extends MessagingSystem with Logging + +

+ +
Source
PrintMessagingSystem.scala
+ Linear Supertypes +
Logging, LazyLogging, MessagingSystem, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. PrintMessagingSystem
  2. Logging
  3. LazyLogging
  4. MessagingSystem
  5. AnyRef
  6. Any
  7. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + PrintMessagingSystem() + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PrintMessagingSystem to + any2stringadd[PrintMessagingSystem] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (PrintMessagingSystem, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PrintMessagingSystem to + ArrowAssoc[PrintMessagingSystem] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (PrintMessagingSystem) ⇒ Boolean, msg: ⇒ Any): PrintMessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PrintMessagingSystem to + Ensuring[PrintMessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (PrintMessagingSystem) ⇒ Boolean): PrintMessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PrintMessagingSystem to + Ensuring[PrintMessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): PrintMessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PrintMessagingSystem to + Ensuring[PrintMessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): PrintMessagingSystem + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PrintMessagingSystem to + Ensuring[PrintMessagingSystem] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PrintMessagingSystem to + StringFormat[PrintMessagingSystem] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + + lazy val + + + logger: Logger + +

    + + Permalink + + +
    Attributes
    protected
    Definition Classes
    LazyLogging
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + def + + + publish(topic: String, message: String): Unit + +

    + + Permalink + + +
    Definition Classes
    PrintMessagingSystemMessagingSystem
    +
  24. + + +

    + + + def + + + publishMetrics(context: Context, stage: String, metrics: Map[String, Double]): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  25. + + +

    + + + def + + + publishProcessComplete(context: Context): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  26. + + +

    + + + def + + + publishProcessFailed(context: Context, failure: Throwable): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  27. + + +

    + + + def + + + publishProcessStarting(context: Context): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  28. + + +

    + + + def + + + publishStageComplete(context: Context, stage: String, message: String = ""): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  29. + + +

    + + + def + + + publishStageFailed(context: Context, stage: String, failure: Throwable): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  30. + + +

    + + + def + + + publishStageRetrying(context: Context, stage: String): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  31. + + +

    + + + def + + + publishStageStarting(context: Context, stage: String, message: String = ""): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  32. + + +

    + + + def + + + stop(): Unit + +

    + + Permalink + + +
    Definition Classes
    MessagingSystem
    +
  33. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  34. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  35. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  36. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  37. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  38. + + +

    + + + def + + + [B](y: B): (PrintMessagingSystem, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from PrintMessagingSystem to + ArrowAssoc[PrintMessagingSystem] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Logging

+
+

Inherited from LazyLogging

+
+

Inherited from MessagingSystem

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + PrintMessagingSystem to any2stringadd[PrintMessagingSystem] +

+
+

Inherited by implicit conversion StringFormat from + PrintMessagingSystem to StringFormat[PrintMessagingSystem] +

+
+

Inherited by implicit conversion Ensuring from + PrintMessagingSystem to Ensuring[PrintMessagingSystem] +

+
+

Inherited by implicit conversion ArrowAssoc from + PrintMessagingSystem to ArrowAssoc[PrintMessagingSystem] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/Processing$.html b/api/com/mediative/amadou/monitoring/Processing$.html new file mode 100644 index 0000000..c37d9d7 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/Processing$.html @@ -0,0 +1,475 @@ + + + + Processing - com.mediative.amadou.monitoring.Processing + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.monitoring

+

Processing

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + + object + + + Processing extends StateRecord with Product with Serializable + +

+ +
Source
Events.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, StateRecord, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Processing
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. StateRecord
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + identifier: String + +

    + + Permalink + + +
    Definition Classes
    StateRecord
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from StateRecord

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/Retrying$.html b/api/com/mediative/amadou/monitoring/Retrying$.html new file mode 100644 index 0000000..0a84d22 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/Retrying$.html @@ -0,0 +1,475 @@ + + + + Retrying - com.mediative.amadou.monitoring.Retrying + + + + + + + + + + + + + + + +
+ Object +

com.mediative.amadou.monitoring

+

Retrying

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + + object + + + Retrying extends StateRecord with Product with Serializable + +

+ +
Source
Events.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, StateRecord, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. Retrying
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. StateRecord
  7. AnyRef
  8. Any
  9. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  4. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  5. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  6. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  7. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  8. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  9. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  10. + + +

    + + + def + + + identifier: String + +

    + + Permalink + + +
    Definition Classes
    StateRecord
    +
  11. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  12. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  15. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  16. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  17. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  18. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from StateRecord

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/RunEvent.html b/api/com/mediative/amadou/monitoring/RunEvent.html new file mode 100644 index 0000000..330cd31 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/RunEvent.html @@ -0,0 +1,773 @@ + + + + RunEvent - com.mediative.amadou.monitoring.RunEvent + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.monitoring

+

RunEvent

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + + case class + + + RunEvent(jobId: String, processId: String, state: String, processingDate: String, timestamp: Long, duration: Long, message: String) extends Product with Serializable + +

+ +
Source
Events.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. RunEvent
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + RunEvent(jobId: String, processId: String, state: String, processingDate: String, timestamp: Long, duration: Long, message: String) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RunEvent to + any2stringadd[RunEvent] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (RunEvent, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RunEvent to + ArrowAssoc[RunEvent] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + val + + + duration: Long + +

    + + Permalink + + + +
  9. + + +

    + + + def + + + ensuring(cond: (RunEvent) ⇒ Boolean, msg: ⇒ Any): RunEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RunEvent to + Ensuring[RunEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (RunEvent) ⇒ Boolean): RunEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RunEvent to + Ensuring[RunEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): RunEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RunEvent to + Ensuring[RunEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): RunEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RunEvent to + Ensuring[RunEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RunEvent to + StringFormat[RunEvent] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  18. + + +

    + + + val + + + jobId: String + +

    + + Permalink + + + +
  19. + + +

    + + + val + + + message: String + +

    + + Permalink + + + +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + val + + + processId: String + +

    + + Permalink + + + +
  24. + + +

    + + + val + + + processingDate: String + +

    + + Permalink + + + +
  25. + + +

    + + + val + + + state: String + +

    + + Permalink + + + +
  26. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  27. + + +

    + + + val + + + timestamp: Long + +

    + + Permalink + + + +
  28. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + + def + + + [B](y: B): (RunEvent, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from RunEvent to + ArrowAssoc[RunEvent] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + RunEvent to any2stringadd[RunEvent] +

+
+

Inherited by implicit conversion StringFormat from + RunEvent to StringFormat[RunEvent] +

+
+

Inherited by implicit conversion Ensuring from + RunEvent to Ensuring[RunEvent] +

+
+

Inherited by implicit conversion ArrowAssoc from + RunEvent to ArrowAssoc[RunEvent] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/StageEvent.html b/api/com/mediative/amadou/monitoring/StageEvent.html new file mode 100644 index 0000000..c88a442 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/StageEvent.html @@ -0,0 +1,773 @@ + + + + StageEvent - com.mediative.amadou.monitoring.StageEvent + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou.monitoring

+

StageEvent

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + + case class + + + StageEvent(jobId: String, processId: String, stage: String, state: String, timestamp: Long, duration: Long, message: String) extends Product with Serializable + +

+ +
Source
Events.scala
+ Linear Supertypes +
Serializable, Serializable, Product, Equals, AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. StageEvent
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  8. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + StageEvent(jobId: String, processId: String, stage: String, state: String, timestamp: Long, duration: Long, message: String) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StageEvent to + any2stringadd[StageEvent] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (StageEvent, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StageEvent to + ArrowAssoc[StageEvent] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + val + + + duration: Long + +

    + + Permalink + + + +
  9. + + +

    + + + def + + + ensuring(cond: (StageEvent) ⇒ Boolean, msg: ⇒ Any): StageEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StageEvent to + Ensuring[StageEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: (StageEvent) ⇒ Boolean): StageEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StageEvent to + Ensuring[StageEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): StageEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StageEvent to + Ensuring[StageEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + ensuring(cond: Boolean): StageEvent + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StageEvent to + Ensuring[StageEvent] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  13. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StageEvent to + StringFormat[StageEvent] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  18. + + +

    + + + val + + + jobId: String + +

    + + Permalink + + + +
  19. + + +

    + + + val + + + message: String + +

    + + Permalink + + + +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + + val + + + processId: String + +

    + + Permalink + + + +
  24. + + +

    + + + val + + + stage: String + +

    + + Permalink + + + +
  25. + + +

    + + + val + + + state: String + +

    + + Permalink + + + +
  26. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  27. + + +

    + + + val + + + timestamp: Long + +

    + + Permalink + + + +
  28. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  29. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  30. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  31. + + +

    + + + def + + + [B](y: B): (StageEvent, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StageEvent to + ArrowAssoc[StageEvent] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from Serializable

+
+

Inherited from Serializable

+
+

Inherited from Product

+
+

Inherited from Equals

+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + StageEvent to any2stringadd[StageEvent] +

+
+

Inherited by implicit conversion StringFormat from + StageEvent to StringFormat[StageEvent] +

+
+

Inherited by implicit conversion Ensuring from + StageEvent to Ensuring[StageEvent] +

+
+

Inherited by implicit conversion ArrowAssoc from + StageEvent to ArrowAssoc[StageEvent] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/StateRecord.html b/api/com/mediative/amadou/monitoring/StateRecord.html new file mode 100644 index 0000000..cab77c7 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/StateRecord.html @@ -0,0 +1,698 @@ + + + + StateRecord - com.mediative.amadou.monitoring.StateRecord + + + + + + + + + + + + + + + +
+ Trait +

com.mediative.amadou.monitoring

+

StateRecord

Related Doc: + package monitoring +

+ + Permalink + + +
+ +

+ + sealed + trait + + + StateRecord extends AnyRef + +

+ +

Process and stage states registry. +

Source
Events.scala
+ Linear Supertypes +
AnyRef, Any
+
+ Known Subclasses + +
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. StateRecord
  2. AnyRef
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StateRecord to + any2stringadd[StateRecord] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (StateRecord, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StateRecord to + ArrowAssoc[StateRecord] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + clone(): AnyRef + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  8. + + +

    + + + def + + + ensuring(cond: (StateRecord) ⇒ Boolean, msg: ⇒ Any): StateRecord + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StateRecord to + Ensuring[StateRecord] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (StateRecord) ⇒ Boolean): StateRecord + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StateRecord to + Ensuring[StateRecord] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): StateRecord + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StateRecord to + Ensuring[StateRecord] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): StateRecord + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StateRecord to + Ensuring[StateRecord] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + final + def + + + eq(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  13. + + +

    + + + def + + + equals(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  14. + + +

    + + + def + + + finalize(): Unit + +

    + + Permalink + + +
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + classOf[java.lang.Throwable] + ) + +
    +
  15. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StateRecord to + StringFormat[StateRecord] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  16. + + +

    + + final + def + + + getClass(): Class[_] + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  17. + + +

    + + + def + + + hashCode(): Int + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  18. + + +

    + + + def + + + identifier: String + +

    + + Permalink + + + +
  19. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  20. + + +

    + + final + def + + + ne(arg0: AnyRef): Boolean + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  21. + + +

    + + final + def + + + notify(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  22. + + +

    + + final + def + + + notifyAll(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  23. + + +

    + + final + def + + + synchronized[T0](arg0: ⇒ T0): T0 + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    +
  24. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    AnyRef → Any
    +
  25. + + +

    + + final + def + + + wait(): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  26. + + +

    + + final + def + + + wait(arg0: Long, arg1: Int): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  27. + + +

    + + final + def + + + wait(arg0: Long): Unit + +

    + + Permalink + + +
    Definition Classes
    AnyRef
    Annotations
    + @throws( + + ... + ) + +
    +
  28. + + +

    + + + def + + + [B](y: B): (StateRecord, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from StateRecord to + ArrowAssoc[StateRecord] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + StateRecord to any2stringadd[StateRecord] +

+
+

Inherited by implicit conversion StringFormat from + StateRecord to StringFormat[StateRecord] +

+
+

Inherited by implicit conversion Ensuring from + StateRecord to Ensuring[StateRecord] +

+
+

Inherited by implicit conversion ArrowAssoc from + StateRecord to ArrowAssoc[StateRecord] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/monitoring/package.html b/api/com/mediative/amadou/monitoring/package.html new file mode 100644 index 0000000..c45e465 --- /dev/null +++ b/api/com/mediative/amadou/monitoring/package.html @@ -0,0 +1,325 @@ + + + + monitoring - com.mediative.amadou.monitoring + + + + + + + + + + + + + + + +
+ Package +

com.mediative.amadou

+

monitoring

+ + Permalink + + +
+ +

+ + + package + + + monitoring + +

+ +
+ + +
+
+ + +
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + + class + + + KafkaMessagingSystem extends MessagingSystem with Logging + +

    + + Permalink + + + +
  2. + + +

    + + abstract + class + + + MessagingSystem extends AnyRef + +

    + + Permalink + + + +
  3. + + +

    + + + case class + + + MetricsEvent(jobId: String, processId: String, stage: String, timestamp: Long, message: Map[String, Double]) extends Product with Serializable + +

    + + Permalink + + + +
  4. + + +

    + + + class + + + PrintMessagingSystem extends MessagingSystem with Logging + +

    + + Permalink + + + +
  5. + + +

    + + + case class + + + RunEvent(jobId: String, processId: String, state: String, processingDate: String, timestamp: Long, duration: Long, message: String) extends Product with Serializable + +

    + + Permalink + + + +
  6. + + +

    + + + case class + + + StageEvent(jobId: String, processId: String, stage: String, state: String, timestamp: Long, duration: Long, message: String) extends Product with Serializable + +

    + + Permalink + + + +
  7. + + +

    + + sealed + trait + + + StateRecord extends AnyRef + +

    + + Permalink + + +

    Process and stage states registry.

    +
+
+ + + +
+

Value Members

+
  1. + + +

    + + + object + + + Complete extends StateRecord with Product with Serializable + +

    + + Permalink + + + +
  2. + + +

    + + + object + + + Failed extends StateRecord with Product with Serializable + +

    + + Permalink + + + +
  3. + + +

    + + + object + + + KafkaMessagingSystem + +

    + + Permalink + + + +
  4. + + +

    + + + object + + + MessagingSystem + +

    + + Permalink + + + +
  5. + + +

    + + + object + + + Processing extends StateRecord with Product with Serializable + +

    + + Permalink + + + +
  6. + + +

    + + + object + + + Retrying extends StateRecord with Product with Serializable + +

    + + Permalink + + + +
+
+ + + + +
+ +
+ + +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/package$$SparkHdfsUrlReaderOps.html b/api/com/mediative/amadou/package$$SparkHdfsUrlReaderOps.html new file mode 100644 index 0000000..ba2b3a8 --- /dev/null +++ b/api/com/mediative/amadou/package$$SparkHdfsUrlReaderOps.html @@ -0,0 +1,599 @@ + + + + SparkHdfsUrlReaderOps - com.mediative.amadou.SparkHdfsUrlReaderOps + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou

+

SparkHdfsUrlReaderOps

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + implicit final + class + + + SparkHdfsUrlReaderOps extends AnyVal + +

+ +
Source
package.scala
+ Linear Supertypes +
AnyVal, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SparkHdfsUrlReaderOps
  2. AnyVal
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + SparkHdfsUrlReaderOps(self: DataFrameReader) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlReaderOps to + any2stringadd[SparkHdfsUrlReaderOps] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SparkHdfsUrlReaderOps, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlReaderOps to + ArrowAssoc[SparkHdfsUrlReaderOps] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + csv(url: HdfsUrl*): DataFrame + +

    + + Permalink + + + +
  8. + + +

    + + + def + + + ensuring(cond: (SparkHdfsUrlReaderOps) ⇒ Boolean, msg: ⇒ Any): SparkHdfsUrlReaderOps + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlReaderOps to + Ensuring[SparkHdfsUrlReaderOps] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (SparkHdfsUrlReaderOps) ⇒ Boolean): SparkHdfsUrlReaderOps + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlReaderOps to + Ensuring[SparkHdfsUrlReaderOps] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SparkHdfsUrlReaderOps + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlReaderOps to + Ensuring[SparkHdfsUrlReaderOps] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): SparkHdfsUrlReaderOps + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlReaderOps to + Ensuring[SparkHdfsUrlReaderOps] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlReaderOps to + StringFormat[SparkHdfsUrlReaderOps] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  13. + + +

    + + + def + + + getClass(): Class[_ <: AnyVal] + +

    + + Permalink + + +
    Definition Classes
    AnyVal → Any
    +
  14. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  15. + + +

    + + + def + + + json(url: HdfsUrl*): DataFrame + +

    + + Permalink + + + +
  16. + + +

    + + + def + + + load(url: HdfsUrl*): DataFrame + +

    + + Permalink + + + +
  17. + + +

    + + + def + + + orc(url: HdfsUrl*): DataFrame + +

    + + Permalink + + + +
  18. + + +

    + + + def + + + parquet(url: HdfsUrl*): DataFrame + +

    + + Permalink + + + +
  19. + + +

    + + + val + + + self: DataFrameReader + +

    + + Permalink + + + +
  20. + + +

    + + + def + + + text(url: HdfsUrl*): DataFrame + +

    + + Permalink + + + +
  21. + + +

    + + + def + + + textFile(url: HdfsUrl*): Dataset[String] + +

    + + Permalink + + + +
  22. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  23. + + +

    + + + def + + + [B](y: B): (SparkHdfsUrlReaderOps, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlReaderOps to + ArrowAssoc[SparkHdfsUrlReaderOps] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyVal

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + SparkHdfsUrlReaderOps to any2stringadd[SparkHdfsUrlReaderOps] +

+
+

Inherited by implicit conversion StringFormat from + SparkHdfsUrlReaderOps to StringFormat[SparkHdfsUrlReaderOps] +

+
+

Inherited by implicit conversion Ensuring from + SparkHdfsUrlReaderOps to Ensuring[SparkHdfsUrlReaderOps] +

+
+

Inherited by implicit conversion ArrowAssoc from + SparkHdfsUrlReaderOps to ArrowAssoc[SparkHdfsUrlReaderOps] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/package$$SparkHdfsUrlWriteOps.html b/api/com/mediative/amadou/package$$SparkHdfsUrlWriteOps.html new file mode 100644 index 0000000..ce4b83c --- /dev/null +++ b/api/com/mediative/amadou/package$$SparkHdfsUrlWriteOps.html @@ -0,0 +1,582 @@ + + + + SparkHdfsUrlWriteOps - com.mediative.amadou.SparkHdfsUrlWriteOps + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou

+

SparkHdfsUrlWriteOps

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + implicit final + class + + + SparkHdfsUrlWriteOps[T] extends AnyVal + +

+ +
Source
package.scala
+ Linear Supertypes +
AnyVal, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SparkHdfsUrlWriteOps
  2. AnyVal
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + SparkHdfsUrlWriteOps(self: DataFrameWriter[T]) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlWriteOps[T] to + any2stringadd[SparkHdfsUrlWriteOps[T]] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SparkHdfsUrlWriteOps[T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlWriteOps[T] to + ArrowAssoc[SparkHdfsUrlWriteOps[T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + csv(url: HdfsUrl): Unit + +

    + + Permalink + + + +
  8. + + +

    + + + def + + + ensuring(cond: (SparkHdfsUrlWriteOps[T]) ⇒ Boolean, msg: ⇒ Any): SparkHdfsUrlWriteOps[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlWriteOps[T] to + Ensuring[SparkHdfsUrlWriteOps[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: (SparkHdfsUrlWriteOps[T]) ⇒ Boolean): SparkHdfsUrlWriteOps[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlWriteOps[T] to + Ensuring[SparkHdfsUrlWriteOps[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SparkHdfsUrlWriteOps[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlWriteOps[T] to + Ensuring[SparkHdfsUrlWriteOps[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + ensuring(cond: Boolean): SparkHdfsUrlWriteOps[T] + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlWriteOps[T] to + Ensuring[SparkHdfsUrlWriteOps[T]] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  12. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlWriteOps[T] to + StringFormat[SparkHdfsUrlWriteOps[T]] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  13. + + +

    + + + def + + + getClass(): Class[_ <: AnyVal] + +

    + + Permalink + + +
    Definition Classes
    AnyVal → Any
    +
  14. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  15. + + +

    + + + def + + + json(url: HdfsUrl): Unit + +

    + + Permalink + + + +
  16. + + +

    + + + def + + + orc(url: HdfsUrl): Unit + +

    + + Permalink + + + +
  17. + + +

    + + + def + + + parquet(url: HdfsUrl): Unit + +

    + + Permalink + + + +
  18. + + +

    + + + def + + + save(url: HdfsUrl): Unit + +

    + + Permalink + + + +
  19. + + +

    + + + val + + + self: DataFrameWriter[T] + +

    + + Permalink + + + +
  20. + + +

    + + + def + + + text(url: HdfsUrl): Unit + +

    + + Permalink + + + +
  21. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  22. + + +

    + + + def + + + [B](y: B): (SparkHdfsUrlWriteOps[T], B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SparkHdfsUrlWriteOps[T] to + ArrowAssoc[SparkHdfsUrlWriteOps[T]] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyVal

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + SparkHdfsUrlWriteOps[T] to any2stringadd[SparkHdfsUrlWriteOps[T]] +

+
+

Inherited by implicit conversion StringFormat from + SparkHdfsUrlWriteOps[T] to StringFormat[SparkHdfsUrlWriteOps[T]] +

+
+

Inherited by implicit conversion Ensuring from + SparkHdfsUrlWriteOps[T] to Ensuring[SparkHdfsUrlWriteOps[T]] +

+
+

Inherited by implicit conversion ArrowAssoc from + SparkHdfsUrlWriteOps[T] to ArrowAssoc[SparkHdfsUrlWriteOps[T]] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/package$$SymbolToStage.html b/api/com/mediative/amadou/package$$SymbolToStage.html new file mode 100644 index 0000000..dafb5e0 --- /dev/null +++ b/api/com/mediative/amadou/package$$SymbolToStage.html @@ -0,0 +1,548 @@ + + + + SymbolToStage - com.mediative.amadou.SymbolToStage + + + + + + + + + + + + + + + +
+ Class +

com.mediative.amadou

+

SymbolToStage

Related Doc: + package amadou +

+ + Permalink + + +
+ +

+ + implicit final + class + + + SymbolToStage extends AnyVal + +

+ +
Source
package.scala
+ Linear Supertypes +
AnyVal, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. SymbolToStage
  2. AnyVal
  3. Any
  4. +
+
+ Implicitly
+
+
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  5. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+
+

Instance Constructors

+
  1. + + +

    + + + new + + + SymbolToStage(self: Symbol) + +

    + + Permalink + + + +
+
+ + + + + +
+

Value Members

+
  1. + + +

    + + final + def + + + !=(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  2. + + +

    + + final + def + + + ##(): Int + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  3. + + +

    + + + def + + + +(other: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SymbolToStage to + any2stringadd[SymbolToStage] performed by method any2stringadd in scala.Predef. + +
    Definition Classes
    any2stringadd
    +
  4. + + +

    + + + def + + + ->[B](y: B): (SymbolToStage, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SymbolToStage to + ArrowAssoc[SymbolToStage] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    Annotations
    + @inline() + +
    +
  5. + + +

    + + final + def + + + ==(arg0: Any): Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  6. + + +

    + + final + def + + + asInstanceOf[T0]: T0 + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  7. + + +

    + + + def + + + ensuring(cond: (SymbolToStage) ⇒ Boolean, msg: ⇒ Any): SymbolToStage + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SymbolToStage to + Ensuring[SymbolToStage] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  8. + + +

    + + + def + + + ensuring(cond: (SymbolToStage) ⇒ Boolean): SymbolToStage + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SymbolToStage to + Ensuring[SymbolToStage] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  9. + + +

    + + + def + + + ensuring(cond: Boolean, msg: ⇒ Any): SymbolToStage + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SymbolToStage to + Ensuring[SymbolToStage] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  10. + + +

    + + + def + + + ensuring(cond: Boolean): SymbolToStage + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SymbolToStage to + Ensuring[SymbolToStage] performed by method Ensuring in scala.Predef. + +
    Definition Classes
    Ensuring
    +
  11. + + +

    + + + def + + + formatted(fmtstr: String): String + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SymbolToStage to + StringFormat[SymbolToStage] performed by method StringFormat in scala.Predef. + +
    Definition Classes
    StringFormat
    Annotations
    + @inline() + +
    +
  12. + + +

    + + + def + + + getClass(): Class[_ <: AnyVal] + +

    + + Permalink + + +
    Definition Classes
    AnyVal → Any
    +
  13. + + +

    + + final + def + + + isInstanceOf[T0]: Boolean + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  14. + + +

    + + + val + + + self: Symbol + +

    + + Permalink + + + +
  15. + + +

    + + + def + + + sink[T](write: (Context[Dataset[T]]) ⇒ Unit): Stage[Dataset[T], Dataset[T]] + +

    + + Permalink + + + +
  16. + + +

    + + + def + + + source[T](read: (Context[SparkSession]) ⇒ Dataset[T]): Stage[Any, Dataset[T]] + +

    + + Permalink + + + +
  17. + + +

    + + + def + + + stage[I, T](f: (Context[I]) ⇒ T): Stage[I, T] + +

    + + Permalink + + + +
  18. + + +

    + + + def + + + toString(): String + +

    + + Permalink + + +
    Definition Classes
    Any
    +
  19. + + +

    + + + def + + + transform[S, T](transform: (Context[Dataset[S]]) ⇒ Dataset[T]): Stage[Dataset[S], Dataset[T]] + +

    + + Permalink + + + +
  20. + + +

    + + + def + + + [B](y: B): (SymbolToStage, B) + +

    + + Permalink + + +
    Implicit information
    + This member is added by an implicit conversion from SymbolToStage to + ArrowAssoc[SymbolToStage] performed by method ArrowAssoc in scala.Predef. + +
    Definition Classes
    ArrowAssoc
    +
+
+ + + + +
+ +
+
+

Inherited from AnyVal

+
+

Inherited from Any

+
+
+

Inherited by implicit conversion any2stringadd from + SymbolToStage to any2stringadd[SymbolToStage] +

+
+

Inherited by implicit conversion StringFormat from + SymbolToStage to StringFormat[SymbolToStage] +

+
+

Inherited by implicit conversion Ensuring from + SymbolToStage to Ensuring[SymbolToStage] +

+
+

Inherited by implicit conversion ArrowAssoc from + SymbolToStage to ArrowAssoc[SymbolToStage] +

+
+
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/amadou/package.html b/api/com/mediative/amadou/package.html new file mode 100644 index 0000000..8ffb524 --- /dev/null +++ b/api/com/mediative/amadou/package.html @@ -0,0 +1,796 @@ + + + + amadou - com.mediative.amadou + + + + + + + + + + + + + + + +
+ Package +

com.mediative

+

amadou

+ + Permalink + + +
+ +

+ + + package + + + amadou + +

+ +
Source
package.scala
+ Linear Supertypes +
AnyRef, Any
+
+ + +
+
+
+ Ordering +
    + +
  1. Alphabetic
  2. +
  3. By Inheritance
  4. +
+
+
+ Inherited
+
+
    +
  1. amadou
  2. AnyRef
  3. Any
  4. +
+
+ +
    +
  1. Hide All
  2. +
  3. Show All
  4. +
+
+
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + +
+

Type Members

+
  1. + + +

    + + + type + + + Config = typesafe.config.Config + +

    + + Permalink + + + +
  2. + + +

    + + + trait + + + ConfigLoader extends ArbitraryTypeReader with FicusInstances + +

    + + Permalink + + +

    Mixin for loading and injecting values from configuration files.

    +
  3. + + +

    + + + type + + + Counter = io.prometheus.client.Counter + +

    + + Permalink + + + +
  4. + + +

    + + sealed abstract + class + + + DateInterval extends Ordered[DateInterval] + +

    + + Permalink + + +

    Base class for date intervals.

    Base class for date intervals.

    The interval is represented as the half open range between from and to. +For instance, May 2014 is represented as from = 2014-05-01, to = 2014-06-01.

    Example:

    scala> Seq(Day(2016, 8, 11), Week(2016, 32), Month(2016, 8), Quarter(2016, Quarter.Q3), Year(2016))
    +res1: Seq[DateInterval] = List(2016-08-11, 2016-W32, 2016-08, 2016-Q3, 2016)
    +
  5. + + +

    + + sealed abstract + class + + + DateIntervalType extends AnyRef + +

    + + Permalink + + +

    Base class for specific date intervals +

    +
  6. + + +

    + + + type + + + Gauge = io.prometheus.client.Gauge + +

    + + Permalink + + + +
  7. + + +

    + + + case class + + + HdfsUrl(url: String, dateFormat: Option[String] = None) extends Product with Serializable + +

    + + Permalink + + +

    Utility class for working with HDFS URLs.

    Utility class for working with HDFS URLs.

    It allows to customize how dates are formatted and then

    scala> HdfsUrl("some/path") / "somewhere" / Day(2016, 8, 28)
    +res1: HdfsUrl = some/path/somewhere/2016-08-28
    +scala> HdfsUrl("root", dateFormat = Some("'year='yyyy/'month'=MM")) / Day(2016, 8, 28)
    +res2: HdfsUrl = root/year=2016/month=08
    +
  8. + + +

    + + + trait + + + Logging extends LazyLogging + +

    + + Permalink + + + +
  9. + + +

    + + + case class + + + ManagedIO[T <: AutoCloseable](t: Try[T]) extends Product with Serializable + +

    + + Permalink + + +

    Manage auto closeable resources.

    +
  10. + + +

    + + sealed abstract + class + + + Quarter extends AnyRef + +

    + + Permalink + + + +
  11. + + +

    + + + case class + + + RetryOptions(delay: FiniteDuration, max: Int) extends Product with Serializable + +

    + + Permalink + + + +
  12. + + +

    + + + case class + + + Schedule(dates: Stream[DateInterval]) extends Traversable[DateInterval] with Product with Serializable + +

    + + Permalink + + +

    A schedule is a sequence of monotonic decreasing dates.

    A schedule is a sequence of monotonic decreasing dates. It can be +composed with other schedules to form more complex execution plans.

    Generating a list of days for a daily schedule:

    scala> Schedule.iterate(Day(2016, 7, 2)).take(3).toList
    +res2: List[DateInterval] = List(2016-07-02, 2016-07-01, 2016-06-30)

    Generate a list of days for a monthly schedule:

    scala> Schedule.iterate(Month(2016, 3)).where(Year(2016).<=).toList
    +res1: List[DateInterval] = List(2016-03, 2016-02, 2016-01)
    +
  13. + + +

    + + + trait + + + ScheduleDsl extends AnyRef + +

    + + Permalink + + +

    Mixin providing a DSL for defining schedules.

    Mixin providing a DSL for defining schedules.

    If for example, we want to run a report against a cumulative data source +each day and must ensure that it runs the first of every month to generate +a report for all of the previous month. This schedule can be defined as:

    val schedule = today and monthly

    If we are only interested in "backfilling" jobs from a specific date use +a where clause, e.g.:

    val schedule = daily where (_ >= Date(2016, 4, 12)
    +
  14. + + +

    + + + case class + + + Slack(url: String, channel: String, user: String, icon: String) extends Logging with Product with Serializable + +

    + + Permalink + + +

    Wrap the functionality to send messages to a Slack channel.

    +
  15. + + +

    + + implicit final + class + + + SparkHdfsUrlReaderOps extends AnyVal + +

    + + Permalink + + + +
  16. + + +

    + + implicit final + class + + + SparkHdfsUrlWriteOps[T] extends AnyVal + +

    + + Permalink + + + +
  17. + + +

    + + + trait + + + SparkJob extends Logging + +

    + + Permalink + + +

    A Spark ETL job

    A Spark ETL job

    Jobs have a schedule of dates which is filtered using job specific +logic and run in chronological order. For example, for jobs which run +each day and at end of month, we check if it ran correctly "today" +and if not we traverse if it ran for previous "month's end" etc., +until we find a completed run or we have traversed some magical max +number.

    The schedule can be overridden by defining the start environment +variable with a date formatted as "yyyy-MM-dd". In this case the job +is only run the the specified date. +

    +
  18. + + +

    + + + trait + + + SparkJobSuiteBase extends DatasetSuiteBase with BeforeAndAfterAll + +

    + + Permalink + + +

    Base class which provides an environment for running tasks.

    +
  19. + + +

    + + abstract + class + + + SparkRunner[Job <: SparkJob] extends Logging with ScheduleDsl with ConfigLoader + +

    + + Permalink + + + +
  20. + + +

    + + sealed + trait + + + Stage[-I, +T] extends AnyRef + +

    + + Permalink + + + +
  21. + + +

    + + implicit final + class + + + SymbolToStage extends AnyVal + +

    + + Permalink + + + +
+
+ + + +
+

Value Members

+
  1. + + +

    + + + object + + + DatabaseUtils extends Logging + +

    + + Permalink + + + +
  2. + + +

    + + + object + + + DateInterval + +

    + + Permalink + + + +
  3. + + +

    + + + object + + + Day extends DateIntervalType + +

    + + Permalink + + + +
  4. + + +

    + + + object + + + ManagedIO extends Serializable + +

    + + Permalink + + + +
  5. + + +

    + + + object + + + Month extends DateIntervalType + +

    + + Permalink + + + +
  6. + + +

    + + + object + + + Quarter extends DateIntervalType + +

    + + Permalink + + +

    Quarters of the year.

    Quarters of the year.

    scala> Quarter(2017, Quarter.Q1)
    +res1: DateInterval = 2017-Q1
    +scala> Year(2017).by(Quarter).toList
    +res2: List[DateInterval] = List(2017-Q1, 2017-Q2, 2017-Q3, 2017-Q4)
    +scala> Quarter(2017, Quarter.Q1).by(Month).toList
    +res3: List[DateInterval] = List(2017-01, 2017-02, 2017-03)
    +scala> Quarter.parse("2008-Q4")
    +res4: Option[DateInterval] = Some(2008-Q4)
    +scala> Quarter(2017, Quarter.Q2).format("yyyy-MM-dd")
    +res5: String = 2017-04-01
    +
  7. + + +

    + + + object + + + Schedule extends Serializable + +

    + + Permalink + + + +
  8. + + +

    + + + object + + + Schema + +

    + + Permalink + + +

    Marker trait for case classes to automatically provide a Spark +encoder.

    +
  9. + + +

    + + + object + + + Slack extends Serializable + +

    + + Permalink + + + +
  10. + + +

    + + + object + + + SparkImplicits + +

    + + Permalink + + + +
  11. + + +

    + + + object + + + SparkJob + +

    + + Permalink + + + +
  12. + + +

    + + + object + + + Stage + +

    + + Permalink + + + +
  13. + + +

    + + + object + + + Week extends DateIntervalType + +

    + + Permalink + + +

    ISO 8601 week.

    ISO 8601 week. Note that it has some counterintuitive behavior around new year. +For instance Monday 29 December 2008 is week 2009-W01, and Sunday 3 January 2010 is week 2009-W53-7 +This example was taken from from http://en.wikipedia.org/wiki/ISO_8601#Week_dates:

    scala> Week(Day(2008, 12, 29))
    +res1: DateInterval = 2009-W01
    +scala> Week(Day(2010, 1, 3))
    +res2: DateInterval = 2009-W53
    +scala> Week(2009, 53, dayOfWeek = Week.Sunday).by(Day).last
    +res3: DateInterval = 2010-01-03
    +
  14. + + +

    + + + object + + + Year extends DateIntervalType + +

    + + Permalink + + + +
  15. + + +

    + + + package + + + bigquery + +

    + + Permalink + + + +
  16. + + +

    + + + package + + + monitoring + +

    + + Permalink + + + +
+
+ + + + +
+ +
+
+

Inherited from AnyRef

+
+

Inherited from Any

+
+ +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/mediative/package.html b/api/com/mediative/package.html new file mode 100644 index 0000000..ad2d98f --- /dev/null +++ b/api/com/mediative/package.html @@ -0,0 +1,118 @@ + + + + mediative - com.mediative + + + + + + + + + + + + + + + +
+ Package +

com

+

mediative

+ + Permalink + + +
+ +

+ + + package + + + mediative + +

+ +
+ + +
+
+ + +
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + + package + + + amadou + +

    + + Permalink + + + +
+
+ + + + +
+ +
+ + +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/com/package.html b/api/com/package.html new file mode 100644 index 0000000..000a9fc --- /dev/null +++ b/api/com/package.html @@ -0,0 +1,118 @@ + + + + com - com + + + + + + + + + + + + + + + +
+ Package + +

com

+ + Permalink + + +
+ +

+ + + package + + + com + +

+ +
+ + +
+
+ + +
+ Visibility +
  1. Public
  2. All
+
+
+ +
+
+ + + + + + +
+

Value Members

+
  1. + + +

    + + + package + + + mediative + +

    + + Permalink + + + +
+
+ + + + +
+ +
+ + +
+ +
+
+

Ungrouped

+ +
+
+ +
+ +
+ + + + + + diff --git a/api/index.html b/api/index.html new file mode 100644 index 0000000..ad38df6 --- /dev/null +++ b/api/index.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + +
+ class icon + trait icon + trait icon + trait icon +
+
+
+
+
+
#ABCDEFGHIJKLMNOPQRSTUVWXYZdeprecated
+
+
+
+
+ +
+ + diff --git a/api/index.js b/api/index.js new file mode 100644 index 0000000..4101123 --- /dev/null +++ b/api/index.js @@ -0,0 +1 @@ +Index.PACKAGES = {"com.mediative.amadou.bigquery" : [{"class" : "com\/mediative\/amadou\/bigquery\/package$$BigQueryDataset.html", "name" : "com.mediative.amadou.bigquery.BigQueryDataset"}, {"class" : "com\/mediative\/amadou\/bigquery\/package$$BigQuerySparkSession.html", "name" : "com.mediative.amadou.bigquery.BigQuerySparkSession"}, {"object" : "com\/mediative\/amadou\/bigquery\/BigQueryTable$.html", "case class" : "com\/mediative\/amadou\/bigquery\/BigQueryTable.html", "name" : "com.mediative.amadou.bigquery.BigQueryTable"}, {"object" : "com\/mediative\/amadou\/bigquery\/package$$CreateDisposition$.html", "name" : "com.mediative.amadou.bigquery.CreateDisposition"}, {"object" : "com\/mediative\/amadou\/bigquery\/GoogleAuthentication$.html", "class" : "com\/mediative\/amadou\/bigquery\/GoogleAuthentication.html", "name" : "com.mediative.amadou.bigquery.GoogleAuthentication"}, {"object" : "com\/mediative\/amadou\/bigquery\/package$$TableNotFound$.html", "name" : "com.mediative.amadou.bigquery.TableNotFound"}, {"object" : "com\/mediative\/amadou\/bigquery\/package$$WriteDisposition$.html", "name" : "com.mediative.amadou.bigquery.WriteDisposition"}], "com.mediative" : [], "com.mediative.amadou" : [{"trait" : "com\/mediative\/amadou\/ConfigLoader.html", "name" : "com.mediative.amadou.ConfigLoader"}, {"object" : "com\/mediative\/amadou\/DatabaseUtils$.html", "name" : "com.mediative.amadou.DatabaseUtils"}, {"object" : "com\/mediative\/amadou\/DateInterval$.html", "class" : "com\/mediative\/amadou\/DateInterval.html", "name" : "com.mediative.amadou.DateInterval"}, {"class" : "com\/mediative\/amadou\/DateIntervalType.html", "name" : "com.mediative.amadou.DateIntervalType"}, {"object" : "com\/mediative\/amadou\/Day$.html", "name" : "com.mediative.amadou.Day"}, {"case class" : "com\/mediative\/amadou\/HdfsUrl.html", "name" : "com.mediative.amadou.HdfsUrl"}, {"trait" : "com\/mediative\/amadou\/Logging.html", "name" : "com.mediative.amadou.Logging"}, {"object" : "com\/mediative\/amadou\/ManagedIO$.html", "case class" : "com\/mediative\/amadou\/ManagedIO.html", "name" : "com.mediative.amadou.ManagedIO"}, {"object" : "com\/mediative\/amadou\/Month$.html", "name" : "com.mediative.amadou.Month"}, {"object" : "com\/mediative\/amadou\/Quarter$.html", "class" : "com\/mediative\/amadou\/Quarter.html", "name" : "com.mediative.amadou.Quarter"}, {"case class" : "com\/mediative\/amadou\/RetryOptions.html", "name" : "com.mediative.amadou.RetryOptions"}, {"object" : "com\/mediative\/amadou\/Schedule$.html", "case class" : "com\/mediative\/amadou\/Schedule.html", "name" : "com.mediative.amadou.Schedule"}, {"trait" : "com\/mediative\/amadou\/ScheduleDsl.html", "name" : "com.mediative.amadou.ScheduleDsl"}, {"object" : "com\/mediative\/amadou\/Schema$.html", "name" : "com.mediative.amadou.Schema"}, {"object" : "com\/mediative\/amadou\/Slack$.html", "case class" : "com\/mediative\/amadou\/Slack.html", "name" : "com.mediative.amadou.Slack"}, {"class" : "com\/mediative\/amadou\/package$$SparkHdfsUrlReaderOps.html", "name" : "com.mediative.amadou.SparkHdfsUrlReaderOps"}, {"class" : "com\/mediative\/amadou\/package$$SparkHdfsUrlWriteOps.html", "name" : "com.mediative.amadou.SparkHdfsUrlWriteOps"}, {"object" : "com\/mediative\/amadou\/SparkImplicits$.html", "name" : "com.mediative.amadou.SparkImplicits"}, {"object" : "com\/mediative\/amadou\/SparkJob$.html", "trait" : "com\/mediative\/amadou\/SparkJob.html", "name" : "com.mediative.amadou.SparkJob"}, {"trait" : "com\/mediative\/amadou\/SparkJobSuiteBase.html", "name" : "com.mediative.amadou.SparkJobSuiteBase"}, {"class" : "com\/mediative\/amadou\/SparkRunner.html", "name" : "com.mediative.amadou.SparkRunner"}, {"object" : "com\/mediative\/amadou\/Stage$.html", "trait" : "com\/mediative\/amadou\/Stage.html", "name" : "com.mediative.amadou.Stage"}, {"class" : "com\/mediative\/amadou\/package$$SymbolToStage.html", "name" : "com.mediative.amadou.SymbolToStage"}, {"object" : "com\/mediative\/amadou\/Week$.html", "name" : "com.mediative.amadou.Week"}, {"object" : "com\/mediative\/amadou\/Year$.html", "name" : "com.mediative.amadou.Year"}], "com.mediative.amadou.monitoring" : [{"object" : "com\/mediative\/amadou\/monitoring\/Complete$.html", "name" : "com.mediative.amadou.monitoring.Complete"}, {"object" : "com\/mediative\/amadou\/monitoring\/Failed$.html", "name" : "com.mediative.amadou.monitoring.Failed"}, {"object" : "com\/mediative\/amadou\/monitoring\/KafkaMessagingSystem$.html", "class" : "com\/mediative\/amadou\/monitoring\/KafkaMessagingSystem.html", "name" : "com.mediative.amadou.monitoring.KafkaMessagingSystem"}, {"object" : "com\/mediative\/amadou\/monitoring\/MessagingSystem$.html", "class" : "com\/mediative\/amadou\/monitoring\/MessagingSystem.html", "name" : "com.mediative.amadou.monitoring.MessagingSystem"}, {"case class" : "com\/mediative\/amadou\/monitoring\/MetricsEvent.html", "name" : "com.mediative.amadou.monitoring.MetricsEvent"}, {"class" : "com\/mediative\/amadou\/monitoring\/PrintMessagingSystem.html", "name" : "com.mediative.amadou.monitoring.PrintMessagingSystem"}, {"object" : "com\/mediative\/amadou\/monitoring\/Processing$.html", "name" : "com.mediative.amadou.monitoring.Processing"}, {"object" : "com\/mediative\/amadou\/monitoring\/Retrying$.html", "name" : "com.mediative.amadou.monitoring.Retrying"}, {"case class" : "com\/mediative\/amadou\/monitoring\/RunEvent.html", "name" : "com.mediative.amadou.monitoring.RunEvent"}, {"case class" : "com\/mediative\/amadou\/monitoring\/StageEvent.html", "name" : "com.mediative.amadou.monitoring.StageEvent"}, {"trait" : "com\/mediative\/amadou\/monitoring\/StateRecord.html", "name" : "com.mediative.amadou.monitoring.StateRecord"}], "com" : []}; \ No newline at end of file diff --git a/api/index/index-_.html b/api/index/index-_.html new file mode 100644 index 0000000..87da6a1 --- /dev/null +++ b/api/index/index-_.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + +
+
+
+
DateInterval
+
+
-
+
DateInterval
+
+
/
+
HdfsUrl
+
+
~>
+
Stage
+
+ diff --git a/api/index/index-a.html b/api/index/index-a.html new file mode 100644 index 0000000..6024286 --- /dev/null +++ b/api/index/index-a.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + +
+
amadou
+
mediative
+
+
and
+
Schedule
+
+
andThen
+
Stage
+
+
apply
+
DateIntervalType Day ManagedIO Month Quarter Schedule Stage Context Week Year GoogleAuthentication
+
+
asDate
+
DateInterval
+
+
asTimestamp
+
DateInterval
+
+ diff --git a/api/index/index-b.html b/api/index/index-b.html new file mode 100644 index 0000000..4ce0b5a --- /dev/null +++ b/api/index/index-b.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + +
+
BQ_CSV_DATE_FORMAT
+
bigquery
+
+
BigQueryDataset
+
bigquery
+
+
BigQuerySparkSession
+
bigquery
+
+
BigQueryTable
+
bigquery
+
+
beforeAll
+
SparkJobSuiteBase
+
+
bigquery
+
amadou
+
+
bq
+
BigQueryDataset BigQuerySparkSession
+
+
by
+
DateInterval
+
+ diff --git a/api/index/index-c.html b/api/index/index-c.html new file mode 100644 index 0000000..6213181 --- /dev/null +++ b/api/index/index-c.html @@ -0,0 +1,74 @@ + + + + + + + + + + + + +
+
CREATE_IF_NEEDED
+
CreateDisposition
+
+
CREATE_NEVER
+
CreateDisposition
+
+
Complete
+
monitoring
+
+
Config
+
amadou
+
+
ConfigLoader
+
amadou
+
+
Context
+
SparkRunner Stage MessagingSystem
+
+
Counter
+
amadou
+
+
CreateDisposition
+
bigquery
+
+
CustomHttpRequestInitializer
+
GoogleAuthentication
+
+
calendarField
+
DateIntervalType
+
+
channel
+
Slack Payload
+
+
com
+
root
+
+
compare
+
DateInterval
+
+
conf
+
BigQueryDataset BigQuerySparkSession
+
+
config
+
SparkJobSuiteBase
+
+
contains
+
DateInterval
+
+
counter
+
SparkRunner
+
+
create
+
MessagingSystem
+
+
createJob
+
SparkRunner
+
+
csv
+
SparkHdfsUrlReaderOps SparkHdfsUrlWriteOps
+
+ diff --git a/api/index/index-d.html b/api/index/index-d.html new file mode 100644 index 0000000..14253ca --- /dev/null +++ b/api/index/index-d.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + +
+
DatabaseUtils
+
amadou
+
+
DateInterval
+
amadou
+
+
DateIntervalType
+
amadou
+
+
Day
+
amadou
+
+
Dbm
+
GoogleAuthentication
+
+
daily
+
ScheduleDsl
+
+
dataset
+
BigQueryTable
+
+
date
+
Context
+
+
dateFormat
+
DateIntervalType HdfsUrl
+
+
dates
+
Schedule
+
+
delay
+
RetryOptions
+
+
duration
+
Context RunEvent StageEvent
+
+ diff --git a/api/index/index-e.html b/api/index/index-e.html new file mode 100644 index 0000000..74e637b --- /dev/null +++ b/api/index/index-e.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + +
+
empty
+
Schedule
+
+
encoder
+
Schema
+
+
end
+
DateInterval
+
+
equals
+
DateInterval
+
+
eventDate
+
Context Context
+
+
exists
+
HdfsUrl
+
+ diff --git a/api/index/index-f.html b/api/index/index-f.html new file mode 100644 index 0000000..0fdadd5 --- /dev/null +++ b/api/index/index-f.html @@ -0,0 +1,41 @@ + + + + + + + + + + + + +
+
Failed
+
monitoring
+
+
Friday
+
Week
+
+
failures
+
SequenceAllException
+
+
fileSystem
+
HdfsUrl SparkJobSuiteBase
+
+
flatMap
+
ManagedIO Stage
+
+
foreach
+
ManagedIO Schedule
+
+
format
+
DateInterval
+
+
formats
+
Slack
+
+
from
+
DateInterval
+
+ diff --git a/api/index/index-g.html b/api/index/index-g.html new file mode 100644 index 0000000..d9225d9 --- /dev/null +++ b/api/index/index-g.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + +
+
Gauge
+
amadou
+
+
GoogleAuthentication
+
bigquery
+
+
gauge
+
SparkRunner
+
+
getMessage
+
SequenceAllException
+
+ diff --git a/api/index/index-h.html b/api/index/index-h.html new file mode 100644 index 0000000..694be0f --- /dev/null +++ b/api/index/index-h.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
+
HTTP_TRANSPORT
+
GoogleAuthentication
+
+
HdfsUrl
+
amadou
+
+ diff --git a/api/index/index-i.html b/api/index/index-i.html new file mode 100644 index 0000000..2f39e73 --- /dev/null +++ b/api/index/index-i.html @@ -0,0 +1,41 @@ + + + + + + + + + + + + +
+
icon
+
Slack
+
+
icon_emoji
+
Payload
+
+
id
+
Friday Monday Saturday Sunday Thursday Tuesday Wednesday WeekDay
+
+
identifier
+
StateRecord
+
+
identity
+
Stage
+
+
initialize
+
CustomHttpRequestInitializer
+
+
interval
+
DateInterval
+
+
isDefined
+
SparkColumnOps
+
+
iterate
+
Schedule
+
+ diff --git a/api/index/index-j.html b/api/index/index-j.html new file mode 100644 index 0000000..5c99951 --- /dev/null +++ b/api/index/index-j.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + +
+
JSON_FACTORY
+
GoogleAuthentication
+
+
jobId
+
Context Context MetricsEvent RunEvent StageEvent
+
+
jobName
+
SparkRunner
+
+
json
+
SparkHdfsUrlReaderOps SparkHdfsUrlWriteOps
+
+ diff --git a/api/index/index-k.html b/api/index/index-k.html new file mode 100644 index 0000000..d1d358f --- /dev/null +++ b/api/index/index-k.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + +
+
KafkaMessagingSystem
+
monitoring
+
+ diff --git a/api/index/index-l.html b/api/index/index-l.html new file mode 100644 index 0000000..ec14628 --- /dev/null +++ b/api/index/index-l.html @@ -0,0 +1,23 @@ + + + + + + + + + + + + +
+
Logging
+
amadou
+
+
link_names
+
Payload
+
+
load
+
SparkHdfsUrlReaderOps
+
+ diff --git a/api/index/index-m.html b/api/index/index-m.html new file mode 100644 index 0000000..c614fef --- /dev/null +++ b/api/index/index-m.html @@ -0,0 +1,62 @@ + + + + + + + + + + + + +
+
ManagedIO
+
amadou
+
+
MaxScheduledDates
+
SparkJob
+
+
MessagingSystem
+
monitoring
+
+
MetricsEvent
+
monitoring
+
+
Monday
+
Week
+
+
Month
+
amadou
+
+
main
+
SparkRunner
+
+
map
+
ManagedIO Stage
+
+
mapper
+
PartitionStrategy
+
+
max
+
RetryOptions
+
+
mediative
+
com
+
+
message
+
MetricsEvent RunEvent StageEvent
+
+
monitoring
+
amadou
+
+
month
+
Quarter
+
+
monthly
+
ScheduleDsl
+
+
msg
+
PostException
+
+ diff --git a/api/index/index-n.html b/api/index/index-n.html new file mode 100644 index 0000000..473a9fd --- /dev/null +++ b/api/index/index-n.html @@ -0,0 +1,23 @@ + + + + + + + + + + + + +
+
name
+
Stage
+
+
next
+
DateInterval
+
+
nullify
+
SparkColumnOps
+
+ diff --git a/api/index/index-o.html b/api/index/index-o.html new file mode 100644 index 0000000..c6ab54c --- /dev/null +++ b/api/index/index-o.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
+
open
+
HdfsUrl
+
+
orc
+
SparkHdfsUrlReaderOps SparkHdfsUrlWriteOps
+
+ diff --git a/api/index/index-p.html b/api/index/index-p.html new file mode 100644 index 0000000..9e8c538 --- /dev/null +++ b/api/index/index-p.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + +
+
PartitionByDay
+
BigQueryTable
+
+
PartitionByMonth
+
BigQueryTable
+
+
PartitionMapper
+
BigQueryTable
+
+
PartitionStrategy
+
BigQueryTable
+
+
Payload
+
Slack
+
+
PostException
+
Slack
+
+
PrintMessagingSystem
+
monitoring
+
+
Processing
+
monitoring
+
+
parquet
+
SparkHdfsUrlReaderOps SparkHdfsUrlWriteOps
+
+
parse
+
DateIntervalType
+
+
partitionBy
+
BigQueryTable
+
+
partitionSuffix
+
PartitionStrategy
+
+
partitionedByDay
+
BigQueryTable
+
+
partitionedByMonth
+
BigQueryTable
+
+
path
+
HdfsUrl
+
+
post
+
Slack
+
+
prev
+
DateInterval
+
+
processId
+
Context MetricsEvent RunEvent StageEvent
+
+
processingDate
+
RunEvent
+
+
project
+
BigQueryTable
+
+
propertiesValueReader
+
ConfigLoader
+
+
publish
+
KafkaMessagingSystem MessagingSystem PrintMessagingSystem
+
+
publishMetrics
+
MessagingSystem
+
+
publishProcessComplete
+
MessagingSystem
+
+
publishProcessFailed
+
MessagingSystem
+
+
publishProcessStarting
+
MessagingSystem
+
+
publishStageComplete
+
MessagingSystem
+
+
publishStageFailed
+
MessagingSystem
+
+
publishStageRetrying
+
MessagingSystem
+
+
publishStageStarting
+
MessagingSystem
+
+ diff --git a/api/index/index-q.html b/api/index/index-q.html new file mode 100644 index 0000000..4bc1765 --- /dev/null +++ b/api/index/index-q.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + +
+
Q1
+
Quarter
+
+
Q2
+
Quarter
+
+
Q3
+
Quarter
+
+
Q4
+
Quarter
+
+
Quarter
+
amadou
+
+
quarterly
+
ScheduleDsl
+
+ diff --git a/api/index/index-r.html b/api/index/index-r.html new file mode 100644 index 0000000..81e87e4 --- /dev/null +++ b/api/index/index-r.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + +
+
Reference
+
BigQueryTable
+
+
Result
+
Stage
+
+
RetryOptions
+
amadou
+
+
Retrying
+
monitoring
+
+
RunEvent
+
monitoring
+
+
readBigQueryCSVExtract
+
BigQuerySparkSession
+
+
readProperties
+
KafkaMessagingSystem
+
+
recordsProcessed
+
SparkRunner
+
+
reference
+
BigQueryTable
+
+
referenceFor
+
BigQueryTable
+
+
run
+
SparkJob SparkRunner Context Stage Context
+
+
runScripts
+
DatabaseUtils
+
+ diff --git a/api/index/index-s.html b/api/index/index-s.html new file mode 100644 index 0000000..e105e23 --- /dev/null +++ b/api/index/index-s.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + +
+
Saturday
+
Week
+
+
Schedule
+
amadou
+
+
ScheduleDsl
+
amadou
+
+
Schema
+
amadou
+
+
SequenceAllException
+
Stage
+
+
SimpleContext
+
Stage
+
+
Slack
+
amadou
+
+
SparkColumnOps
+
SparkImplicits
+
+
SparkHdfsUrlReaderOps
+
amadou
+
+
SparkHdfsUrlWriteOps
+
amadou
+
+
SparkImplicits
+
amadou
+
+
SparkJob
+
amadou
+
+
SparkJobSuiteBase
+
amadou
+
+
SparkRunner
+
amadou
+
+
Stage
+
amadou
+
+
StageEvent
+
monitoring
+
+
StateRecord
+
monitoring
+
+
Sunday
+
Week
+
+
SymbolToStage
+
amadou
+
+
save
+
SparkHdfsUrlWriteOps
+
+
saveAsBigQueryTable
+
BigQueryDataset
+
+
sc
+
BigQuerySparkSession
+
+
schedule
+
SparkRunner
+
+
scopes
+
GoogleAuthentication
+
+
self
+
SparkHdfsUrlReaderOps SparkHdfsUrlWriteOps SparkColumnOps SymbolToStage
+
+
sequence
+
Stage
+
+
sequenceAll
+
Stage
+
+
setBigQueryDatasetLocation
+
BigQuerySparkSession
+
+
setBigQueryGcsBucket
+
BigQuerySparkSession
+
+
setBigQueryProjectId
+
BigQuerySparkSession
+
+
setGcpJsonKeyFile
+
BigQuerySparkSession
+
+
setGcpPk12KeyFile
+
BigQuerySparkSession
+
+
shouldRunForDate
+
SparkJob
+
+
sink
+
Stage SymbolToStage
+
+
source
+
Stage SymbolToStage
+
+
spark
+
Context
+
+
sqlContext
+
BigQueryDataset
+
+
stage
+
SymbolToStage MetricsEvent StageEvent
+
+
stages
+
SparkJob
+
+
startTime
+
Context
+
+
state
+
RunEvent StageEvent
+
+
stop
+
KafkaMessagingSystem MessagingSystem
+
+ diff --git a/api/index/index-t.html b/api/index/index-t.html new file mode 100644 index 0000000..15ce858 --- /dev/null +++ b/api/index/index-t.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + +
+
TableNotFound
+
bigquery
+
+
Thursday
+
Week
+
+
Tuesday
+
Week
+
+
t
+
ManagedIO
+
+
table
+
BigQueryTable
+
+
tableHasDataForDate
+
bigquery
+
+
text
+
Payload SparkHdfsUrlReaderOps SparkHdfsUrlWriteOps
+
+
textFile
+
SparkHdfsUrlReaderOps
+
+
timestamp
+
MetricsEvent RunEvent StageEvent
+
+
to
+
DateInterval
+
+
toFicusConfig
+
ConfigLoader
+
+
toOpt
+
DateInterval
+
+
toString
+
DateInterval HdfsUrl
+
+
today
+
DateIntervalType ScheduleDsl
+
+
transform
+
Stage SymbolToStage
+
+ diff --git a/api/index/index-u.html b/api/index/index-u.html new file mode 100644 index 0000000..59294cc --- /dev/null +++ b/api/index/index-u.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + +
+
UTC
+
DateInterval
+
+
unapply
+
TableNotFound
+
+
url
+
HdfsUrl Slack
+
+
user
+
Slack
+
+
username
+
Payload
+
+ diff --git a/api/index/index-v.html b/api/index/index-v.html new file mode 100644 index 0000000..0fb3883 --- /dev/null +++ b/api/index/index-v.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
+
value
+
Context
+
+
valueReader
+
bigquery
+
+ diff --git a/api/index/index-w.html b/api/index/index-w.html new file mode 100644 index 0000000..36fcaa9 --- /dev/null +++ b/api/index/index-w.html @@ -0,0 +1,41 @@ + + + + + + + + + + + + +
+
WRITE_APPEND
+
WriteDisposition
+
+
WRITE_EMPTY
+
WriteDisposition
+
+
WRITE_TRUNCATE
+
WriteDisposition
+
+
Wednesday
+
Week
+
+
Week
+
amadou
+
+
WeekDay
+
Week
+
+
WriteDisposition
+
bigquery
+
+
where
+
Schedule
+
+
withValue
+
Context Context SimpleContext
+
+ diff --git a/api/index/index-y.html b/api/index/index-y.html new file mode 100644 index 0000000..fd05193 --- /dev/null +++ b/api/index/index-y.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
+
Year
+
amadou
+
+
yearly
+
ScheduleDsl
+
+ diff --git a/api/lib/arrow-down.png b/api/lib/arrow-down.png new file mode 100644 index 0000000..7229603 Binary files /dev/null and b/api/lib/arrow-down.png differ diff --git a/api/lib/arrow-right.png b/api/lib/arrow-right.png new file mode 100644 index 0000000..b2f2935 Binary files /dev/null and b/api/lib/arrow-right.png differ diff --git a/api/lib/class.png b/api/lib/class.png new file mode 100644 index 0000000..97edbd4 Binary files /dev/null and b/api/lib/class.png differ diff --git a/api/lib/class_big.png b/api/lib/class_big.png new file mode 100644 index 0000000..cb1f638 Binary files /dev/null and b/api/lib/class_big.png differ diff --git a/api/lib/class_diagram.png b/api/lib/class_diagram.png new file mode 100644 index 0000000..9d7aec7 Binary files /dev/null and b/api/lib/class_diagram.png differ diff --git a/api/lib/class_to_object_big.png b/api/lib/class_to_object_big.png new file mode 100644 index 0000000..5dd6e38 Binary files /dev/null and b/api/lib/class_to_object_big.png differ diff --git a/api/lib/constructorsbg.gif b/api/lib/constructorsbg.gif new file mode 100644 index 0000000..2e3f5ea Binary files /dev/null and b/api/lib/constructorsbg.gif differ diff --git a/api/lib/conversionbg.gif b/api/lib/conversionbg.gif new file mode 100644 index 0000000..4be145d Binary files /dev/null and b/api/lib/conversionbg.gif differ diff --git a/api/lib/defbg-blue.gif b/api/lib/defbg-blue.gif new file mode 100644 index 0000000..6903833 Binary files /dev/null and b/api/lib/defbg-blue.gif differ diff --git a/api/lib/defbg-green.gif b/api/lib/defbg-green.gif new file mode 100644 index 0000000..36c43be Binary files /dev/null and b/api/lib/defbg-green.gif differ diff --git a/api/lib/diagrams.css b/api/lib/diagrams.css new file mode 100644 index 0000000..5fe33f7 --- /dev/null +++ b/api/lib/diagrams.css @@ -0,0 +1,143 @@ +.diagram-container +{ + display: none; +} + +.diagram +{ + overflow: hidden; + padding-top:15px; +} + +.diagram svg +{ + display: block; + position: absolute; + visibility: hidden; + margin: auto; +} + +.diagram-help +{ + float:right; + display:none; +} + +.magnifying +{ + cursor: -webkit-zoom-in ! important; + cursor: -moz-zoom-in ! important; + cursor: pointer; +} + +#close-link +{ + position: absolute; + z-index: 100; + font-family: Arial, sans-serif; + font-size: 10pt; + text-decoration: underline; + color: #315479; +} + +#close:hover +{ + text-decoration: none; +} + +svg a +{ + cursor:pointer; +} + +svg text +{ + font-size: 10px; +} + +/* try to move the node text 1px in order to be vertically + centered (does not work in all browsers) */ +svg .node text +{ + transform: translate(0px,1px); + -ms-transform: translate(0px,1px); + -webkit-transform: translate(0px,1px); + -o-transform: translate(0px,1px); + -moz-transform: translate(0px,1px); +} + +/* hover effect for edges */ + +svg .edge.over text, +svg .edge.implicit-incoming.over polygon, +svg .edge.implicit-outgoing.over polygon +{ + fill: #202020; +} + +svg .edge.over path, +svg .edge.over polygon +{ + stroke: #202020; +} + +/* hover effect for nodes in class diagrams */ + +svg.class-diagram .node +{ + opacity: 0.75; +} + +svg.class-diagram .node.this +{ + opacity: 1.0; +} + +svg.class-diagram .node.over +{ + opacity: 1.0; +} + +svg .node.over polygon +{ + stroke: #202020; +} + +/* hover effect for nodes in package diagrams */ + +svg.package-diagram .node.class.over polygon, +svg.class-diagram .node.this.class.over polygon +{ + fill: #098552; + fill: #04663e; +} + +svg.package-diagram .node.trait.over polygon, +svg.class-diagram .node.this.trait.over polygon +{ + fill: #3c7b9b; + fill: #235d7b; +} + +svg.package-diagram .node.type.over polygon, +svg.class-diagram .node.this.type.over polygon +{ + fill: #098552; + fill: #04663e; +} + + +svg.package-diagram .node.object.over polygon +{ + fill: #183377; +} + +svg.package-diagram .node.outside.over polygon +{ + fill: #d4d4d4; +} + +svg.package-diagram .node.default.over polygon +{ + fill: #d4d4d4; +} diff --git a/api/lib/diagrams.js b/api/lib/diagrams.js new file mode 100644 index 0000000..680ead7 --- /dev/null +++ b/api/lib/diagrams.js @@ -0,0 +1,324 @@ +/** + * JavaScript functions enhancing the SVG diagrams. + * + * @author Damien Obrist + */ + +var diagrams = {}; + +/** + * Initializes the diagrams in the main window. + */ +$(document).ready(function() +{ + // hide diagrams in browsers not supporting SVG + if(Modernizr && !Modernizr.inlinesvg) + return; + + // only execute this in the main window + if(diagrams.isPopup) + return; + + if($("#content-diagram").length) + $("#inheritance-diagram").css("padding-bottom", "20px"); + + $(".diagram-container").css("display", "block"); + + $(".diagram").each(function() { + // store initial dimensions + $(this).data("width", $("svg", $(this)).width()); + $(this).data("height", $("svg", $(this)).height()); + // store unscaled clone of SVG element + $(this).data("svg", $(this).get(0).childNodes[0].cloneNode(true)); + }); + + // make diagram visible, hide container + $(".diagram").css("display", "none"); + $(".diagram svg").css({ + "position": "static", + "visibility": "visible", + "z-index": "auto" + }); + + // enable linking to diagrams + if($(location).attr("hash") == "#inheritance-diagram") { + diagrams.toggle($("#inheritance-diagram-container"), true); + } else if($(location).attr("hash") == "#content-diagram") { + diagrams.toggle($("#content-diagram-container"), true); + } + + $(".diagram-link").click(function() { + diagrams.toggle($(this).parent()); + }); + + // register resize function + $(window).resize(diagrams.resize); + + // don't bubble event to parent div + // when clicking on a node of a resized + // diagram + $("svg a").click(function(e) { + e.stopPropagation(); + }); + + diagrams.initHighlighting(); +}); + +/** + * Initializes the diagrams in the popup. + */ +diagrams.initPopup = function(id) +{ + // copy diagram from main window + if(!jQuery.browser.msie) + $("body").append(opener.$("#" + id).data("svg")); + + // positioning + $("svg").css("position", "absolute"); + $(window).resize(function() + { + var svg_w = $("svg").css("width").replace("px", ""); + var svg_h = $("svg").css("height").replace("px", ""); + var x = $(window).width() / 2 - svg_w / 2; + if(x < 0) x = 0; + var y = $(window).height() / 2 - svg_h / 2; + if(y < 0) y = 0; + $("svg").css("left", x + "px"); + $("svg").css("top", y + "px"); + }); + $(window).resize(); + + diagrams.initHighlighting(); + $("svg a").click(function(e) { + opener.diagrams.redirectFromPopup(this.href.baseVal); + window.close(); + }); + $(document).keyup(function(e) { + if (e.keyCode == 27) window.close(); + }); +} + +/** + * Initializes highlighting for nodes and edges. + */ +diagrams.initHighlighting = function() +{ + // helper function since $.hover doesn't work in IE + + function hover(elements, fn) + { + elements.mouseover(fn); + elements.mouseout(fn); + } + + // inheritance edges + + hover($("svg .edge.inheritance"), function(evt){ + var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass; + var parts = $(this).attr("id").split("_"); + toggleClass($("#" + parts[0] + "_" + parts[1])); + toggleClass($("#" + parts[0] + "_" + parts[2])); + toggleClass($(this)); + }); + + // nodes + + hover($("svg .node"), function(evt){ + var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass; + toggleClass($(this)); + var parts = $(this).attr("id").split("_"); + var index = parts[1]; + $("svg#" + parts[0] + " .edge.inheritance").each(function(){ + var parts2 = $(this).attr("id").split("_"); + if(parts2[1] == index) + { + toggleClass($("#" + parts2[0] + "_" + parts2[2])); + toggleClass($(this)); + } else if(parts2[2] == index) + { + toggleClass($("#" + parts2[0] + "_" + parts2[1])); + toggleClass($(this)); + } + }); + }); + + // incoming implicits + + hover($("svg .node.implicit-incoming"), function(evt){ + var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass; + toggleClass($(this)); + toggleClass($("svg .edge.implicit-incoming")); + toggleClass($("svg .node.this")); + }); + + hover($("svg .edge.implicit-incoming"), function(evt){ + var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass; + toggleClass($(this)); + toggleClass($("svg .node.this")); + $("svg .node.implicit-incoming").each(function(){ + toggleClass($(this)); + }); + }); + + // implicit outgoing nodes + + hover($("svg .node.implicit-outgoing"), function(evt){ + var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass; + toggleClass($(this)); + toggleClass($("svg .edge.implicit-outgoing")); + toggleClass($("svg .node.this")); + }); + + hover($("svg .edge.implicit-outgoing"), function(evt){ + var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass; + toggleClass($(this)); + toggleClass($("svg .node.this")); + $("svg .node.implicit-outgoing").each(function(){ + toggleClass($(this)); + }); + }); +}; + +/** + * Resizes the diagrams according to the available width. + */ +diagrams.resize = function() +{ + // available width + var availableWidth = $("body").width() - 20; + + $(".diagram-container").each(function() { + // unregister click event on whole div + $(".diagram", this).unbind("click"); + var diagramWidth = $(".diagram", this).data("width"); + var diagramHeight = $(".diagram", this).data("height"); + + if(diagramWidth > availableWidth) + { + // resize diagram + var height = diagramHeight / diagramWidth * availableWidth; + $(".diagram svg", this).width(availableWidth); + $(".diagram svg", this).height(height); + + // register click event on whole div + $(".diagram", this).click(function() { + diagrams.popup($(this)); + }); + $(".diagram", this).addClass("magnifying"); + } + else + { + // restore full size of diagram + $(".diagram svg", this).width(diagramWidth); + $(".diagram svg", this).height(diagramHeight); + // don't show custom cursor any more + $(".diagram", this).removeClass("magnifying"); + } + }); +}; + +/** + * Shows or hides a diagram depending on its current state. + */ +diagrams.toggle = function(container, dontAnimate) +{ + // change class of link + $(".diagram-link", container).toggleClass("open"); + // get element to show / hide + var div = $(".diagram", container); + if (div.is(':visible')) + { + $(".diagram-help", container).hide(); + div.unbind("click"); + div.removeClass("magnifying"); + div.slideUp(100); + } + else + { + diagrams.resize(); + if(dontAnimate) + div.show(); + else + div.slideDown(100); + $(".diagram-help", container).show(); + } +}; + +/** + * Opens a popup containing a copy of a diagram. + */ +diagrams.windows = {}; +diagrams.popup = function(diagram) +{ + var id = diagram.attr("id"); + if(!diagrams.windows[id] || diagrams.windows[id].closed) { + var title = $(".symbol .name", $("#signature")).text(); + // cloning from parent window to popup somehow doesn't work in IE + // therefore include the SVG as a string into the HTML + var svgIE = jQuery.browser.msie ? $("
").append(diagram.data("svg")).html() : ""; + var html = '' + + '\n' + + '\n' + + '\n' + + ' \n' + + ' ' + title + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' Close this window\n' + + ' ' + svgIE + '\n' + + ' \n' + + ''; + + var padding = 30; + var screenHeight = screen.availHeight; + var screenWidth = screen.availWidth; + var w = Math.min(screenWidth, diagram.data("width") + 2 * padding); + var h = Math.min(screenHeight, diagram.data("height") + 2 * padding); + var left = (screenWidth - w) / 2; + var top = (screenHeight - h) / 2; + var parameters = "height=" + h + ", width=" + w + ", left=" + left + ", top=" + top + ", scrollbars=yes, location=no, resizable=yes"; + var win = window.open("about:blank", "_blank", parameters); + win.document.open(); + win.document.write(html); + win.document.close(); + diagrams.windows[id] = win; + } + win.focus(); +}; + +/** + * This method is called from within the popup when a node is clicked. + */ +diagrams.redirectFromPopup = function(url) +{ + window.location = url; +}; + +/** + * Helper method that adds a class to a SVG element. + */ +diagrams.addClass = function(svgElem, newClass) { + newClass = newClass || "over"; + var classes = svgElem.attr("class"); + if ($.inArray(newClass, classes.split(/\s+/)) == -1) { + classes += (classes ? ' ' : '') + newClass; + svgElem.attr("class", classes); + } +}; + +/** + * Helper method that removes a class from a SVG element. + */ +diagrams.removeClass = function(svgElem, oldClass) { + oldClass = oldClass || "over"; + var classes = svgElem.attr("class"); + classes = $.grep(classes.split(/\s+/), function(n, i) { return n != oldClass; }).join(' '); + svgElem.attr("class", classes); +}; + diff --git a/api/lib/filter_box_left.png b/api/lib/filter_box_left.png new file mode 100644 index 0000000..0e8c893 Binary files /dev/null and b/api/lib/filter_box_left.png differ diff --git a/api/lib/filter_box_left2.gif b/api/lib/filter_box_left2.gif new file mode 100644 index 0000000..b9b4907 Binary files /dev/null and b/api/lib/filter_box_left2.gif differ diff --git a/api/lib/filter_box_right.png b/api/lib/filter_box_right.png new file mode 100644 index 0000000..f127e35 Binary files /dev/null and b/api/lib/filter_box_right.png differ diff --git a/api/lib/filterbg.gif b/api/lib/filterbg.gif new file mode 100644 index 0000000..542ba4a Binary files /dev/null and b/api/lib/filterbg.gif differ diff --git a/api/lib/filterboxbarbg.gif b/api/lib/filterboxbarbg.gif new file mode 100644 index 0000000..b5075c1 Binary files /dev/null and b/api/lib/filterboxbarbg.gif differ diff --git a/api/lib/filterboxbarbg.png b/api/lib/filterboxbarbg.png new file mode 100644 index 0000000..d613cf5 Binary files /dev/null and b/api/lib/filterboxbarbg.png differ diff --git a/api/lib/filterboxbg.gif b/api/lib/filterboxbg.gif new file mode 100644 index 0000000..ae2f858 Binary files /dev/null and b/api/lib/filterboxbg.gif differ diff --git a/api/lib/fullcommenttopbg.gif b/api/lib/fullcommenttopbg.gif new file mode 100644 index 0000000..a0d93f4 Binary files /dev/null and b/api/lib/fullcommenttopbg.gif differ diff --git a/api/lib/index.css b/api/lib/index.css new file mode 100644 index 0000000..3e352a9 --- /dev/null +++ b/api/lib/index.css @@ -0,0 +1,339 @@ +* { + color: inherit; + font-size: 10pt; + text-decoration: none; + font-family: Arial, sans-serif; + border-width: 0px; + padding: 0px; + margin: 0px; +} + +a { + cursor: pointer; +} + +a:hover { + text-decoration: underline; +} + +h1 { + display: none; +} + +.selected { + -moz-box-shadow: inset 0px 5px 10px rgba(58, 88, 97, .36); + -webkit-box-shadow: inset 0px 5px 10px rgba(58, 88, 97, .36); + border-top: solid 1px rgba(119, 138, 153, 0.8); + border-bottom: solid 1px rgba(151, 173, 191, 0.4); + background-color: #ced2d9; + margin: -1px 0px; +} + +/*.letters { + font-family: monospace; + font-size: 2pt; + padding: 5px; + background-color: #DADADA; + text-shadow: #ffffff 0 1px 0; +}*/ + +#library { + display: none; +} + +#browser { + top: 0px; + left: 0px; + bottom: 0px; + width: 100%; + display: block; + position: fixed; +} + +#filter { + position: absolute; + display: block; +/* padding: 5px;*/ + right: 0; + left: 0; + top: 0; + background-image:url('filterbg.gif'); + background-repeat:repeat-x; + background-color: #ededee; /* light gray */ + /*background-color: #DADADA;*/ + border:1px solid #bbbbbb; + border-top:0; + border-left:0; + border-right:0; +} + +#textfilter { + position: relative; + display: block; + height: 20px; + margin-top: 5px; + margin-bottom: 5px; +} + +#textfilter > .pre { + display: block; + position: absolute; + top: 0; + left: 0; + height: 23px; + width: 21px; + background: url("filter_box_left.png"); +} + +#textfilter > .input { + display: block; + position: absolute; + top: 0; + right: 20px; + left: 20px; +} + +#textfilter > .input > input { + height: 20px; + padding: 1px; + font-weight: bold; + color: #000000; + background: #ffffff url("filterboxbarbg.png") repeat-x bottom left; + width: 100%; +} + +#textfilter > .post { + display: block; + position: absolute; + top: 0; + right: 0; + height: 23px; + width: 21px; + background: url("filter_box_right.png"); +} + +/*#textfilter { + position: relative; + display: block; + height: 20px; + margin-bottom: 5px; +} + +#textfilter > .pre { + display: block; + position: absolute; + top: 0; + left: 0; + height: 20px; + width: 20px; + background: url("filter_box_left.png"); +} + +#textfilter > .input { + display: block; + position: absolute; + top: 0; + right: 20px; + left: 20px; +} + +#textfilter > .input > input { + height: 16px; + padding: 2px; + font-weight: bold; + color: darkblue; + background-color: white; + width: 100%; +} + +#textfilter > .post { + display: block; + position: absolute; + top: 0; + right: 0; + height: 20px; + width: 20px; + background: url("filter_box_right.png"); +}*/ + +#focusfilter { + position: relative; + text-align: center; + display: block; + padding: 5px; + background-color: #fffebd; /* light yellow*/ + text-shadow: #ffffff 0 1px 0; +} + +#focusfilter .focuscoll { + font-weight: bold; + text-shadow: #ffffff 0 1px 0; +} + +#focusfilter img { + bottom: -2px; + position: relative; +} + +#kindfilter { + position: relative; + display: block; + padding: 5px; +/* background-color: #999;*/ + text-align: center; +} + +#kindfilter > a { + color: black; +/* text-decoration: underline;*/ + text-shadow: #ffffff 0 1px 0; + +} + +#kindfilter > a:hover { + color: #4C4C4C; + text-decoration: none; + text-shadow: #ffffff 0 1px 0; +} + +#letters { + position: relative; + text-align: center; + padding-bottom: 5px; + border:1px solid #bbbbbb; + border-top:0; + border-left:0; + border-right:0; +} + +#letters > a, #letters > span { +/* font-family: monospace;*/ + color: #858484; + font-weight: bold; + font-size: 8pt; + text-shadow: #ffffff 0 1px 0; + padding-right: 2px; +} + +#letters > span { + color: #bbb; +} + +#tpl { + display: block; + position: fixed; + overflow: auto; + right: 0; + left: 0; + bottom: 0; + top: 5px; + position: absolute; + display: block; +} + +#tpl .packhide { + display: block; + float: right; + font-weight: normal; + color: white; +} + +#tpl .packfocus { + display: block; + float: right; + font-weight: normal; + color: white; +} + +#tpl .packages > ol { + background-color: #dadfe6; + /*margin-bottom: 5px;*/ +} + +/*#tpl .packages > ol > li { + margin-bottom: 1px; +}*/ + +#tpl .packages > li > a { + padding: 0px 5px; +} + +#tpl .packages > li > a.tplshow { + display: block; + color: white; + font-weight: bold; + display: block; + text-shadow: #000000 0 1px 0; +} + +#tpl ol > li.pack { + padding: 3px 5px; + background: url("packagesbg.gif"); + background-repeat:repeat-x; + min-height: 14px; + background-color: #6e808e; +} + +#tpl ol > li { + display: block; +} + +#tpl .templates > li { + padding-left: 5px; + min-height: 18px; +} + +#tpl ol > li .icon { + padding-right: 5px; + bottom: -2px; + position: relative; +} + +#tpl .templates div.placeholder { + padding-right: 5px; + width: 13px; + display: inline-block; +} + +#tpl .templates span.tplLink { + padding-left: 5px; +} + +#content { + border-left-width: 1px; + border-left-color: black; + border-left-style: white; + right: 0px; + left: 0px; + bottom: 0px; + top: 0px; + position: fixed; + margin-left: 300px; + display: block; + -webkit-overflow-scrolling: touch; +} + +#content > iframe { + display: block; + height: 100%; + width: 100%; +} + +.ui-layout-pane { + background: #FFF; + overflow: auto; +} + +.ui-layout-resizer { + background-image:url('filterbg.gif'); + background-repeat:repeat-x; + background-color: #ededee; /* light gray */ + border:1px solid #bbbbbb; + border-top:0; + border-bottom:0; + border-left: 0; +} + +.ui-layout-toggler { + background: #AAA; +} \ No newline at end of file diff --git a/api/lib/index.js b/api/lib/index.js new file mode 100644 index 0000000..cf81f7f --- /dev/null +++ b/api/lib/index.js @@ -0,0 +1,577 @@ +// © 2009–2010 EPFL/LAMP +// code by Gilles Dubochet with contributions by Johannes Rudolph, "spiros" and Marcin Kubala + +var topLevelTemplates = undefined; +var topLevelPackages = undefined; + +var scheduler = undefined; + +var kindFilterState = undefined; +var focusFilterState = undefined; + +var title = $(document).attr('title'); + +var lastFragment = ""; + +$(document).ready(function() { + $('body').layout({ + west__size: '20%', + center__maskContents: true + }); + $('#browser').layout({ + center__paneSelector: ".ui-west-center" + //,center__initClosed:true + ,north__paneSelector: ".ui-west-north" + }); + $('iframe').bind("load", function(){ + try { + var subtitle = $(this).contents().find('title').text(); + $(document).attr('title', (title ? title + " - " : "") + subtitle); + } catch (e) { + // Chrome doesn't allow reading the iframe's contents when + // used on the local file system. + } + setUrlFragmentFromFrameSrc(); + }); + + // workaround for IE's iframe sizing lack of smartness + if($.browser.msie) { + function fixIFrame() { + $('iframe').height($(window).height() ) + } + $('iframe').bind("load",fixIFrame) + $('iframe').bind("resize",fixIFrame) + } + + scheduler = new Scheduler(); + scheduler.addLabel("init", 1); + scheduler.addLabel("focus", 2); + scheduler.addLabel("filter", 4); + + prepareEntityList(); + + configureTextFilter(); + configureKindFilter(); + configureEntityList(); + + setFrameSrcFromUrlFragment(); + + // If the url fragment changes, adjust the src of iframe "template". + $(window).bind('hashchange', function() { + if(lastFragment != window.location.hash) { + lastFragment = window.location.hash; + setFrameSrcFromUrlFragment(); + } + }); +}); + +// Set the iframe's src according to the fragment of the current url. +// fragment = "#scala.Either" => iframe url = "scala/Either.html" +// fragment = "#scala.Either@isRight:Boolean" => iframe url = "scala/Either.html#isRight:Boolean" +// fragment = "#scalaz.iteratee.package@>@>[E,A]=scalaz.iteratee.package.Iteratee[E,A]" => iframe url = "scalaz/iteratee/package.html#>@>[E,A]=scalaz.iteratee.package.Iteratee[E,A]" +function setFrameSrcFromUrlFragment() { + + function extractLoc(fragment) { + var loc = fragment.split('@')[0].replace(/\./g, "/"); + if (loc.indexOf(".html") < 0) { + loc += ".html"; + } + return loc; + } + + function extractMemberSig(fragment) { + var splitIdx = fragment.indexOf('@'); + if (splitIdx < 0) { + return; + } + return fragment.substr(splitIdx + 1); + } + + var fragment = location.hash.slice(1); + if (fragment) { + var locWithMemeberSig = extractLoc(fragment); + var memberSig = extractMemberSig(fragment); + if (memberSig) { + locWithMemeberSig += "#" + memberSig; + } + frames["template"].location.replace(location.protocol + locWithMemeberSig); + } else { + console.log("empty fragment detected"); + frames["template"].location.replace("package.html"); + } +} + +// Set the url fragment according to the src of the iframe "template". +// iframe url = "scala/Either.html" => url fragment = "#scala.Either" +// iframe url = "scala/Either.html#isRight:Boolean" => url fragment = "#scala.Either@isRight:Boolean" +// iframe url = "scalaz/iteratee/package.html#>@>[E,A]=scalaz.iteratee.package.Iteratee[E,A]" => fragment = "#scalaz.iteratee.package@>@>[E,A]=scalaz.iteratee.package.Iteratee[E,A]" +function setUrlFragmentFromFrameSrc() { + try { + var commonLength = location.pathname.lastIndexOf("/"); + var frameLocation = frames["template"].location; + var relativePath = frameLocation.pathname.slice(commonLength + 1); + + if(!relativePath || frameLocation.pathname.indexOf("/") < 0) + return; + + // Add #, remove ".html" and replace "/" with "." + fragment = "#" + relativePath.replace(/\.html$/, "").replace(/\//g, "."); + + // Add the frame's hash after an @ + if(frameLocation.hash) fragment += ("@" + frameLocation.hash.slice(1)); + + // Use replace to not add history items + lastFragment = fragment; + location.replace(fragment); + } + catch(e) { + // Chrome doesn't allow reading the iframe's location when + // used on the local file system. + } +} + +var Index = {}; + +(function (ns) { + function openLink(t, type) { + var href; + if (type == 'object') { + href = t['object']; + } else { + href = t['class'] || t['trait'] || t['case class'] || t['type']; + } + return [ + '' + ].join(''); + } + + function createPackageHeader(pack) { + return [ + '
  • ', + 'focushide', + '', + pack, + '
  • ' + ].join(''); + }; + + function createListItem(template) { + var inner = ''; + + + if (template.object) { + inner += openLink(template, 'object'); + } + + if (template['class'] || template['trait'] || template['case class'] || template['type']) { + inner += (inner == '') ? + '
    ' : ''; + inner += openLink(template, template['trait'] ? 'trait' : template['type'] ? 'type' : 'class'); + } else { + inner += '
    '; + } + + return [ + '
  • ', + inner, + '', + template.name.replace(/^.*\./, ''), + '
  • ' + ].join(''); + } + + + ns.createPackageTree = function (pack, matched, focused) { + var html = $.map(matched, function (child, i) { + return createListItem(child); + }).join(''); + + var header; + if (focused && pack == focused) { + header = ''; + } else { + header = createPackageHeader(pack); + } + + return [ + '
      ', + header, + '
        ', + html, + '
    ' + ].join(''); + } + + ns.keys = function (obj) { + var result = []; + var key; + for (key in obj) { + result.push(key); + } + return result; + } + + var hiddenPackages = {}; + + function subPackages(pack) { + return $.grep($('#tpl ol.packages'), function (element, index) { + var pack = $('li.pack > .tplshow', element).text(); + return pack.indexOf(pack + '.') == 0; + }); + } + + ns.hidePackage = function (ol) { + var selected = $('li.pack > .tplshow', ol).text(); + hiddenPackages[selected] = true; + + $('ol.templates', ol).hide(); + + $.each(subPackages(selected), function (index, element) { + $(element).hide(); + }); + } + + ns.showPackage = function (ol, state) { + var selected = $('li.pack > .tplshow', ol).text(); + hiddenPackages[selected] = false; + + $('ol.templates', ol).show(); + + $.each(subPackages(selected), function (index, element) { + $(element).show(); + + // When the filter is in "packs" state, + // we don't want to show the `.templates` + var key = $('li.pack > .tplshow', element).text(); + if (hiddenPackages[key] || state == 'packs') { + $('ol.templates', element).hide(); + } + }); + } + +})(Index); + +function configureEntityList() { + kindFilterSync(); + configureHideFilter(); + configureFocusFilter(); + textFilter(); +} + +/* Updates the list of entities (i.e. the content of the #tpl element) from the raw form generated by Scaladoc to a + form suitable for display. In particular, it adds class and object etc. icons, and it configures links to open in + the right frame. Furthermore, it sets the two reference top-level entities lists (topLevelTemplates and + topLevelPackages) to serve as reference for resetting the list when needed. + Be advised: this function should only be called once, on page load. */ +function prepareEntityList() { + var classIcon = $("#library > img.class"); + var traitIcon = $("#library > img.trait"); + var typeIcon = $("#library > img.type"); + var objectIcon = $("#library > img.object"); + var packageIcon = $("#library > img.package"); + + $('#tpl li.pack > a.tplshow').attr("target", "template"); + $('#tpl li.pack').each(function () { + $("span.class", this).each(function() { $(this).replaceWith(classIcon.clone()); }); + $("span.trait", this).each(function() { $(this).replaceWith(traitIcon.clone()); }); + $("span.type", this).each(function() { $(this).replaceWith(typeIcon.clone()); }); + $("span.object", this).each(function() { $(this).replaceWith(objectIcon.clone()); }); + $("span.package", this).each(function() { $(this).replaceWith(packageIcon.clone()); }); + }); + $('#tpl li.pack') + .prepend("hide") + .prepend("focus"); +} + +/* Handles all key presses while scrolling around with keyboard shortcuts in left panel */ +function keyboardScrolldownLeftPane() { + scheduler.add("init", function() { + $("#textfilter input").blur(); + var $items = $("#tpl li"); + $items.first().addClass('selected'); + + $(window).bind("keydown", function(e) { + var $old = $items.filter('.selected'), + $new; + + switch ( e.keyCode ) { + + case 9: // tab + $old.removeClass('selected'); + break; + + case 13: // enter + $old.removeClass('selected'); + var $url = $old.children().filter('a:last').attr('href'); + $("#template").attr("src",$url); + break; + + case 27: // escape + $old.removeClass('selected'); + $(window).unbind(e); + $("#textfilter input").focus(); + + break; + + case 38: // up + $new = $old.prev(); + + if (!$new.length) { + $new = $old.parent().prev(); + } + + if ($new.is('ol') && $new.children(':last').is('ol')) { + $new = $new.children().children(':last'); + } else if ($new.is('ol')) { + $new = $new.children(':last'); + } + + break; + + case 40: // down + $new = $old.next(); + if (!$new.length) { + $new = $old.parent().parent().next(); + } + if ($new.is('ol')) { + $new = $new.children(':first'); + } + break; + } + + if ($new.is('li')) { + $old.removeClass('selected'); + $new.addClass('selected'); + } else if (e.keyCode == 38) { + $(window).unbind(e); + $("#textfilter input").focus(); + } + }); + }); +} + +/* Configures the text filter */ +function configureTextFilter() { + scheduler.add("init", function() { + $("#textfilter").append(""); + var input = $("#textfilter input"); + resizeFilterBlock(); + input.bind('keyup', function(event) { + if (event.keyCode == 27) { // escape + input.attr("value", ""); + } + if (event.keyCode == 40) { // down arrow + $(window).unbind("keydown"); + keyboardScrolldownLeftPane(); + return false; + } + textFilter(); + }); + input.bind('keydown', function(event) { + if (event.keyCode == 9) { // tab + $("#template").contents().find("#mbrsel-input").focus(); + input.attr("value", ""); + return false; + } + textFilter(); + }); + input.focus(function(event) { input.select(); }); + }); + scheduler.add("init", function() { + $("#textfilter > .post").click(function(){ + $("#textfilter input").attr("value", ""); + textFilter(); + }); + }); +} + +function compilePattern(query) { + var escaped = query.replace(/([\.\*\+\?\|\(\)\[\]\\])/g, '\\$1'); + + if (query.toLowerCase() != query) { + // Regexp that matches CamelCase subbits: "BiSe" is + // "[a-z]*Bi[a-z]*Se" and matches "BitSet", "ABitSet", ... + return new RegExp(escaped.replace(/([A-Z])/g,"[a-z]*$1")); + } + else { // if query is all lower case make a normal case insensitive search + return new RegExp(escaped, "i"); + } +} + +// Filters all focused templates and packages. This function should be made less-blocking. +// @param query The string of the query +function textFilter() { + var query = $("#textfilter input").attr("value") || ''; + var queryRegExp = compilePattern(query); + + // if we are filtering on types, then we have to display types + // ("display packages only" is not possible when filtering) + if (query !== "") { + kindFilter("all"); + } + + // Three things trigger a reload of the left pane list: + // typeof textFilter.lastQuery === "undefined" <-- first load, there is nothing yet in the left pane + // textFilter.lastQuery !== query <-- the filter text has changed + // focusFilterState != null <-- a package has been "focused" + if ((typeof textFilter.lastQuery === "undefined") || (textFilter.lastQuery !== query) || (focusFilterState != null)) { + + textFilter.lastQuery = query; + + scheduler.clear("filter"); + + $('#tpl').html(''); + + var index = 0; + + var searchLoop = function () { + var packages = Index.keys(Index.PACKAGES).sort(); + + while (packages[index]) { + var pack = packages[index]; + var children = Index.PACKAGES[pack]; + index++; + + if (focusFilterState) { + if (pack == focusFilterState || + pack.indexOf(focusFilterState + '.') == 0) { + ; + } else { + continue; + } + } + + var matched = $.grep(children, function (child, i) { + return queryRegExp.test(child.name); + }); + + if (matched.length > 0) { + $('#tpl').append(Index.createPackageTree(pack, matched, + focusFilterState)); + scheduler.add('filter', searchLoop); + return; + } + } + + $('#tpl a.packfocus').click(function () { + focusFilter($(this).parent().parent()); + }); + configureHideFilter(); + }; + + scheduler.add('filter', searchLoop); + } +} + +/* Configures the hide tool by adding the hide link to all packages. */ +function configureHideFilter() { + $('#tpl li.pack a.packhide').click(function () { + var packhide = $(this) + var action = packhide.text(); + + var ol = $(this).parent().parent(); + + if (action == "hide") { + Index.hidePackage(ol); + packhide.text("show"); + } + else { + Index.showPackage(ol, kindFilterState); + packhide.text("hide"); + } + return false; + }); +} + +/* Configures the focus tool by adding the focus bar in the filter box (initially hidden), and by adding the focus + link to all packages. */ +function configureFocusFilter() { + scheduler.add("init", function() { + focusFilterState = null; + if ($("#focusfilter").length == 0) { + $("#filter").append("
    focused on
    "); + $("#focusfilter > .focusremove").click(function(event) { + textFilter(); + + $("#focusfilter").hide(); + $("#kindfilter").show(); + resizeFilterBlock(); + focusFilterState = null; + }); + $("#focusfilter").hide(); + resizeFilterBlock(); + } + }); + scheduler.add("init", function() { + $('#tpl li.pack a.packfocus').click(function () { + focusFilter($(this).parent()); + return false; + }); + }); +} + +/* Focuses the entity index on a specific package. To do so, it will copy the sub-templates and sub-packages of the + focuses package into the top-level templates and packages position of the index. The original top-level + @param package The
  • element that corresponds to the package in the entity index */ +function focusFilter(package) { + scheduler.clear("filter"); + + var currentFocus = $('li.pack > .tplshow', package).text(); + $("#focusfilter > .focuscoll").empty(); + $("#focusfilter > .focuscoll").append(currentFocus); + + $("#focusfilter").show(); + $("#kindfilter").hide(); + resizeFilterBlock(); + focusFilterState = currentFocus; + kindFilterSync(); + + textFilter(); +} + +function configureKindFilter() { + scheduler.add("init", function() { + kindFilterState = "all"; + $("#filter").append(""); + $("#kindfilter > a").click(function(event) { kindFilter("packs"); }); + resizeFilterBlock(); + }); +} + +function kindFilter(kind) { + if (kind == "packs") { + kindFilterState = "packs"; + kindFilterSync(); + $("#kindfilter > a").replaceWith("display all entities"); + $("#kindfilter > a").click(function(event) { kindFilter("all"); }); + } + else { + kindFilterState = "all"; + kindFilterSync(); + $("#kindfilter > a").replaceWith("display packages only"); + $("#kindfilter > a").click(function(event) { kindFilter("packs"); }); + } +} + +/* Applies the kind filter. */ +function kindFilterSync() { + if (kindFilterState == "all" || focusFilterState != null) { + $("#tpl a.packhide").text('hide'); + $("#tpl ol.templates").show(); + } else { + $("#tpl a.packhide").text('show'); + $("#tpl ol.templates").hide(); + } +} + +function resizeFilterBlock() { + $("#tpl").css("top", $("#filter").outerHeight(true)); +} diff --git a/api/lib/jquery-ui.js b/api/lib/jquery-ui.js new file mode 100644 index 0000000..faab0cf --- /dev/null +++ b/api/lib/jquery-ui.js @@ -0,0 +1,6 @@ +/*! jQuery UI - v1.9.0 - 2012-10-05 +* http://jqueryui.com +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.slider.js, jquery.ui.sortable.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js +* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */ + +(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"||e.expr.filters.hidden(this)}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.0",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on({remove:"destroy"}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("
    "),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};lr(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)a&&(v<0||v0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.9.0",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n),r=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset"),this.headers=this.element.find(r.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this._hoverable(this.headers),this._focusable(this.headers),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(),!r.collapsible&&r.active===!1&&(r.active=0),r.active<0&&(r.active+=this.headers.length),this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this._createIcons(),this.originalHeight=this.element[0].style.height,this.refresh(),this.element.attr("role","tablist"),this.headers.attr("role","tab").each(function(n){var r=e(this),i=r.attr("id"),s=r.next(),o=s.attr("id");i||(i=t+"-header-"+n,r.attr("id",i)),o||(o=t+"-panel-"+n,s.attr("id",o)),r.attr("aria-controls",o),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._on(this.headers,{keydown:"_keydown"}),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._setupEvents(r.event)},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&(this.element.css("height",this.originalHeight),e.css("height",""))},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t,n,r=this.options.heightStyle,i=this.element.parent();this.element.css("height",this.originalHeight),r==="fill"?(e.support.minHeight||(n=i.css("overflow"),i.css("overflow","hidden")),t=i.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),n&&i.css("overflow",n),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):r==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).height("").height())}).height(t)),r!=="content"&&this.element.height(this.element.height())},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={};if(!t)return;e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._on(this.headers,n)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on({keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("
  • "+(o[0]>0&&I==o[1]-1?'
    ':""):""),F+=U}B+=F}return B+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!e.inline?'':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c='
    ',h="";if(s||!a)h+=''+o[t]+"";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='"}l||(c+=h+(s||!a||!f?" ":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+=''+n+"";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+='",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?" ":"")+h),c+="
    ",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&tr?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.0",window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(e,t){var n="ui-dialog ui-widget ui-widget-content ui-corner-all ",r={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.9.0",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var t=this,r=this.options,i=r.title||" ",s=(this.uiDialog=e("
    ")).addClass(n+r.dialogClass).css({display:"none",outline:0,zIndex:r.zIndex}).attr("tabIndex",-1).keydown(function(n){r.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===e.ui.keyCode.ESCAPE&&(t.close(n),n.preventDefault())}).mousedown(function(e){t.moveToTop(!1,e)}).appendTo("body"),o=this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(s),u=(this.uiDialogTitlebar=e("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(s),a=e("").addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),t.close(e)}).appendTo(u),f=(this.uiDialogTitlebarCloseText=e("")).addClass("ui-icon ui-icon-closethick").text(r.closeText).appendTo(a),l=e("").uniqueId().addClass("ui-dialog-title").html(i).prependTo(u),c=(this.uiDialogButtonPane=e("
    ")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),h=(this.uiButtonSet=e("
    ")).addClass("ui-dialog-buttonset").appendTo(c);s.attr({role:"dialog","aria-labelledby":l.attr("id")}),u.find("*").add(u).disableSelection(),this._hoverable(a),this._focusable(a),r.draggable&&e.fn.draggable&&this._makeDraggable(),r.resizable&&e.fn.resizable&&this._makeResizable(),this._createButtons(r.buttons),this._isOpen=!1,e.fn.bgiframe&&s.bgiframe(),this._on(s,{keydown:function(t){if(!r.modal||t.keyCode!==e.ui.keyCode.TAB)return;var n=e(":tabbable",s),i=n.filter(":first"),o=n.filter(":last");if(t.target===o[0]&&!t.shiftKey)return i.focus(1),!1;if(t.target===i[0]&&t.shiftKey)return o.focus(1),!1}})},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var e,t=this.oldPosition;this.overlay&&this.overlay.destroy(),this.uiDialog.hide(),this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},close:function(t){var n=this,r,i;if(!this._isOpen)return;if(!1===this._trigger("beforeClose",t))return;return this._isOpen=!1,this.overlay&&this.overlay.destroy(),this.options.hide?this.uiDialog.hide(this.options.hide,function(){n._trigger("close",t)}):(this.uiDialog.hide(),this._trigger("close",t)),e.ui.dialog.overlay.resize(),this.options.modal&&(r=0,e(".ui-dialog").each(function(){this!==n.uiDialog[0]&&(i=e(this).css("z-index"),isNaN(i)||(r=Math.max(r,i)))}),e.ui.dialog.maxZ=r),this},isOpen:function(){return this._isOpen},moveToTop:function(t,n){var r=this.options,i;return r.modal&&!t||!r.stack&&!r.modal?this._trigger("focus",n):(r.zIndex>e.ui.dialog.maxZ&&(e.ui.dialog.maxZ=r.zIndex),this.overlay&&(e.ui.dialog.maxZ+=1,e.ui.dialog.overlay.maxZ=e.ui.dialog.maxZ,this.overlay.$el.css("z-index",e.ui.dialog.overlay.maxZ)),i={scrollTop:this.element.scrollTop(),scrollLeft:this.element.scrollLeft()},e.ui.dialog.maxZ+=1,this.uiDialog.css("z-index",e.ui.dialog.maxZ),this.element.attr(i),this._trigger("focus",n),this)},open:function(){if(this._isOpen)return;var t,n=this.options,r=this.uiDialog;return this._size(),this._position(n.position),r.show(n.show),this.overlay=n.modal?new e.ui.dialog.overlay(this):null,this.moveToTop(!0),t=this.element.find(":tabbable"),t.length||(t=this.uiDialogButtonPane.find(":tabbable"),t.length||(t=r)),t.eq(0).focus(),this._isOpen=!0,this._trigger("open"),this},_createButtons:function(t){var n,r,i=this,s=!1;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),typeof t=="object"&&t!==null&&e.each(t,function(){return!(s=!0)}),s?(e.each(t,function(t,n){n=e.isFunction(n)?{click:n,text:t}:n;var r=e("
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(n=e.ui.ddmanager.drop(this,t)),this.dropped&&(n=this.dropped,this.dropped=!1);var r=this.element[0],i=!1;while(r&&(r=r.parentNode))r==document&&(i=!0);if(!i&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!n||this.options.revert=="valid"&&n||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,n)){var s=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo=="parent"?this.element[0].parentNode:n.appendTo),r[0]!=this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.browser.msie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[t.containment=="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t.containment=="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(t.containment=="document"?0:e(window).scrollLeft())+e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(t.containment=="document"?0:e(window).scrollTop())+(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)&&t.containment.constructor!=Array){var n=e(t.containment),r=n[0];if(!r)return;var i=n.offset(),s=e(r).css("overflow")!="hidden";this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(s?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else t.containment.constructor==Array&&(this.containment=t.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName),s=t.pageX,o=t.pageY;if(this.originalPosition){var u;if(this.containment){if(this.relative_container){var a=this.relative_container.offset();u=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]}else u=this.containment;t.pageX-this.offset.click.leftu[2]&&(s=u[2]+this.offset.click.left),t.pageY-this.offset.click.top>u[3]&&(o=u[3]+this.offset.click.top)}if(n.grid){var f=n.grid[1]?this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY;o=u?f-this.offset.click.topu[3]?f-this.offset.click.topu[2]?l-this.offset.click.left=0;l--){var c=r.snapElements[l].left,h=c+r.snapElements[l].width,p=r.snapElements[l].top,d=p+r.snapElements[l].height;if(!(c-s=l&&o<=c||u>=l&&u<=c||oc)&&(i>=a&&i<=f||s>=a&&s<=f||if);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r=e.ui.ddmanager.droppables[t.options.scope]||[],i=n?n.type:null,s=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var o=0;oe?0:r.max")[0],c,h=t.each;l.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=l.style.backgroundColor.indexOf("rgba")>-1,h(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),o.fn=t.extend(o.prototype,{parse:function(r,i,s,a){if(r===n)return this._rgba=[null,null,null,null],this;if(r.jquery||r.nodeType)r=t(r).css(i),i=n;var f=this,l=t.type(r),v=this._rgba=[],m;i!==n&&(r=[r,i,s,a],l="array");if(l==="string")return this.parse(d(r)||c._default);if(l==="array")return h(u.rgba.props,function(e,t){v[t.idx]=p(r[t.idx],t)}),this;if(l==="object")return r instanceof o?h(u,function(e,t){r[t.cache]&&(f[t.cache]=r[t.cache].slice())}):h(u,function(t,n){var i=n.cache;h(n.props,function(e,t){if(!f[i]&&n.to){if(e==="alpha"||r[e]==null)return;f[i]=n.to(f._rgba)}f[i][t.idx]=p(r[e],t,!0)}),f[i]&&e.inArray(null,f[i].slice(0,3))<0&&(f[i][3]=1,n.from&&(f._rgba=n.from(f[i])))}),this},is:function(e){var t=o(e),n=!0,r=this;return h(u,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],h(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return h(u,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=o(e),r=n._space(),i=u[r],s=this.alpha()===0?o("transparent"):this,f=s[i.cache]||i.to(s._rgba),l=f.slice();return n=n[i.cache],h(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],u=a[r.type]||{};if(o===null)return;s===null?l[i]=o:(u.mod&&(o-s>u.mod/2?s+=u.mod:s-o>u.mod/2&&(s-=u.mod)),l[i]=p((o-s)*t+s,r))}),this[r](l)},blend:function(e){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=o(e)._rgba;return o(t.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var e="rgba(",n=t.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),e="rgb("),e+n.join()+")"},toHslaString:function(){var e="hsla(",n=t.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),e="hsl("),e+n.join()+")"},toHexString:function(e){var n=this._rgba.slice(),r=n.pop();return e&&n.push(~~(r*255)),"#"+t.map(n,function(e,t){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),o.fn.parse.prototype=o.fn,u.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,f===0||f===1?c=f:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},u.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s,u,a,f;return[Math.round(v(o,s,t+1/3)*255),Math.round(v(o,s,t)*255),Math.round(v(o,s,t-1/3)*255),i]},h(u,function(e,r){var s=r.props,u=r.cache,a=r.to,f=r.from;o.fn[e]=function(e){a&&!this[u]&&(this[u]=a(this._rgba));if(e===n)return this[u].slice();var r,i=t.type(e),l=i==="array"||i==="object"?e:arguments,c=this[u].slice();return h(s,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=c[t.idx]),c[t.idx]=p(n,t)}),f?(r=o(f(c)),r[u]=c,r):o(c)},h(s,function(n,r){if(o.fn[n])return;o.fn[n]=function(s){var o=t.type(s),u=n==="alpha"?this._hsla?"hsla":"rgba":e,a=this[u](),f=a[r.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=t.type(s)),s==null&&r.empty?this:(o==="string"&&(l=i.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[r.idx]=s,this[u](a)))}})}),h(r,function(e,n){t.cssHooks[n]={set:function(e,r){var i,s,u="";if(t.type(r)!=="string"||(i=d(r))){r=o(i||r);if(!f.rgba&&r._rgba[3]!==1){s=n==="backgroundColor"?e.parentNode:e;while((u===""||u==="transparent")&&s&&s.style)try{u=t.css(s,"backgroundColor"),s=s.parentNode}catch(a){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{e.style[n]=r}catch(r){}}},t.fx.step[n]=function(e){e.colorInit||(e.start=o(e.elem,n),e.end=o(e.end),e.colorInit=!0),t.cssHooks[n].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return h(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},c=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(){var t=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,n={},r,i,s;if(t&&t.length&&t[0]&&t[t[0]]){s=t.length;while(s--)r=t[s],typeof t[r]=="string"&&(n[e.camelCase(r)]=t[r])}else for(r in t)typeof t[r]=="string"&&(n[r]=t[r]);return n}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").andSelf():r;f=f.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i.call(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=jQuery.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function i(n,r,i,s){e.isPlainObject(n)&&(r=n,n=n.effect),n={effect:n},r===t&&(r={}),e.isFunction(r)&&(s=r,i=null,r={});if(typeof r=="number"||e.fx.speeds[r])s=i,i=r,r={};return e.isFunction(i)&&(s=i,i=null),r&&e.extend(n,r),i=i||r.duration,n.duration=e.fx.off?0:typeof i=="number"?i:i in e.fx.speeds?e.fx.speeds[i]:e.fx.speeds._default,n.complete=s||r.complete,n}function s(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]?n&&e.effects[t]?!1:!0:!1}e.extend(e.effects,{version:"1.9.0",save:function(e,t){for(var n=0;n
    ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(t,r,s,o){function h(t){function s(){e.isFunction(r)&&r.call(n[0]),e.isFunction(t)&&t()}var n=e(this),r=u.complete,i=u.mode;(n.is(":hidden")?i==="hide":i==="show")?s():l.call(n[0],u,s)}var u=i.apply(this,arguments),a=u.mode,f=u.queue,l=e.effects.effect[u.effect],c=!l&&n&&e.effects[u.effect];return e.fx.off||!l&&!c?a?this[a](u.duration,u.complete):this.each(function(){u.complete&&u.complete.call(this)}):l?f===!1?this.each(h):this.queue(f||"fx",h):c.call(this,{options:u,duration:u.duration,callback:u.complete,mode:u.mode})},_show:e.fn.show,show:function(e){if(s(e))return this._show.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(s(e))return this._hide.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(s(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h
    ").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height","overflow","opacity"],s=["position","top","bottom","left","right","overflow","opacity"],o=["width","height","overflow"],u=["fontSize"],a=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],f=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],l=e.effects.setMode(r,t.mode||"effect"),c=t.restore||l!=="effect",h=t.scale||"both",p=t.origin||["middle","center"],d,v,m,g=r.css("position");l==="show"&&r.show(),d={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},r.from=t.from||d,r.to=t.to||d,m={from:{y:r.from.height/d.height,x:r.from.width/d.width},to:{y:r.to.height/d.height,x:r.to.width/d.width}};if(h==="box"||h==="both")m.from.y!==m.to.y&&(i=i.concat(a),r.from=e.effects.setTransition(r,a,m.from.y,r.from),r.to=e.effects.setTransition(r,a,m.to.y,r.to)),m.from.x!==m.to.x&&(i=i.concat(f),r.from=e.effects.setTransition(r,f,m.from.x,r.from),r.to=e.effects.setTransition(r,f,m.to.x,r.to));(h==="content"||h==="both")&&m.from.y!==m.to.y&&(i=i.concat(u),r.from=e.effects.setTransition(r,u,m.from.y,r.from),r.to=e.effects.setTransition(r,u,m.to.y,r.to)),e.effects.save(r,c?i:s),r.show(),e.effects.createWrapper(r),r.css("overflow","hidden").css(r.from),p&&(v=e.effects.getBaseline(p,d),r.from.top=(d.outerHeight-r.outerHeight())*v.y,r.from.left=(d.outerWidth-r.outerWidth())*v.x,r.to.top=(d.outerHeight-r.to.outerHeight)*v.y,r.to.left=(d.outerWidth-r.to.outerWidth)*v.x),r.css(r.from);if(h==="content"||h==="both")a=a.concat(["marginTop","marginBottom"]).concat(u),f=f.concat(["marginLeft","marginRight"]),o=i.concat(a).concat(f),r.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width()};c&&e.effects.save(n,o),n.from={height:r.height*m.from.y,width:r.width*m.from.x},n.to={height:r.height*m.to.y,width:r.width*m.to.x},m.from.y!==m.to.y&&(n.from=e.effects.setTransition(n,a,m.from.y,n.from),n.to=e.effects.setTransition(n,a,m.to.y,n.to)),m.from.x!==m.to.x&&(n.from=e.effects.setTransition(n,f,m.from.x,n.from),n.to=e.effects.setTransition(n,f,m.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){c&&e.effects.restore(n,o)})});r.animate(r.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){r.to.opacity===0&&r.css("opacity",r.from.opacity),l==="hide"&&r.hide(),e.effects.restore(r,c?i:s),c||(g==="static"?r.css({position:"relative",top:r.to.top,left:r.to.left}):e.each(["top","left"],function(e,t){r.css(t,function(t,n){var i=parseInt(n,10),s=e?r.to.left:r.to.top;return n==="auto"?s+"px":i+s+"px"})})),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e('
    ').appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery);(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.0",defaultElement:"
      ",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus+":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"});t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),r.each(function(){var t=e(this),r=t.prev("a"),i=e("").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()
    ").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return e===t?this._value():(this._setOption("value",e),this)},_setOption:function(e,t){e==="value"&&(this.options.value=t,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),this._super(e,t)},_value:function(){var e=this.options.value;return typeof e!="number"&&(e=0),Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage();this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.attr("aria-valuenow",e)}})})(jQuery);(function(e,t){e.widget("ui.resizable",e.ui.mouse,{version:"1.9.0",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var t=this,n=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=n.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var r=this.handles.split(",");this.handles={};for(var i=0;i
    ');u.css({zIndex:n.zIndex}),"se"==s&&u.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(u)}}this._renderAxis=function(t){t=t||this.element;for(var n in this.handles){this.handles[n].constructor==String&&(this.handles[n]=e(this.handles[n],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var r=e(this.handles[n],this.element),i=0;i=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth();var s=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");t.css(s,i),this._proportionallyResize()}if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!t.resizing){if(this.className)var e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);t.axis=e&&e[1]?e[1]:"se"}}),n.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(n.disabled)return;e(this).removeClass("ui-resizable-autohide"),t._handles.show()}).mouseleave(function(){if(n.disabled)return;t.resizing||(e(this).addClass("ui-resizable-autohide"),t._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){t(this.element);var n=this.element;n.after(this.originalElement.css({position:n.css("position"),width:n.outerWidth(),height:n.outerHeight(),top:n.css("top"),left:n.css("left")})).remove()}return this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_mouseCapture:function(t){var n=!1;for(var r in this.handles)e(this.handles[r])[0]==t.target&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var r=this.options,i=this.element.position(),s=this.element;this.resizing=!0,this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()},(s.is(".ui-draggable")||/absolute/.test(s.css("position")))&&s.css({position:"absolute",top:i.top,left:i.left}),this._renderProxy();var o=n(this.helper.css("left")),u=n(this.helper.css("top"));r.containment&&(o+=e(r.containment).scrollLeft()||0,u+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:u},this.size=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalPosition={left:o,top:u},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof r.aspectRatio=="number"?r.aspectRatio:this.originalSize.width/this.originalSize.height||1;var a=e(".ui-resizable-"+this.axis).css("cursor");return e("body").css("cursor",a=="auto"?this.axis+"-resize":a),s.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(e){var t=this.helper,n=this.options,r={},i=this,s=this.originalMousePosition,o=this.axis,u=e.pageX-s.left||0,a=e.pageY-s.top||0,f=this._change[o];if(!f)return!1;var l=f.apply(this,[e,u,a]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)l=this._updateRatio(l,e);return l=this._respectSize(l,e),this._propagate("resize",e),t.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",e,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n=this.options,r=this;if(this._helper){var i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:r.sizeDiff.height,u=s?0:r.sizeDiff.width,a={width:r.helper.width()-u,height:r.helper.height()-o},f=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,l=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;n.animate||this.element.css(e.extend(a,{top:l,left:f})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!n.animate&&this._proportionallyResize()}return e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t=this.options,n,i,s,o,u;u={minWidth:r(t.minWidth)?t.minWidth:0,maxWidth:r(t.maxWidth)?t.maxWidth:Infinity,minHeight:r(t.minHeight)?t.minHeight:0,maxHeight:r(t.maxHeight)?t.maxHeight:Infinity};if(this._aspectRatio||e)n=u.minHeight*this.aspectRatio,s=u.minWidth/this.aspectRatio,i=u.maxHeight*this.aspectRatio,o=u.maxWidth/this.aspectRatio,n>u.minWidth&&(u.minWidth=n),s>u.minHeight&&(u.minHeight=s),ie.width,l=r(e.height)&&i.minHeight&&i.minHeight>e.height;f&&(e.width=i.minWidth),l&&(e.height=i.minHeight),u&&(e.width=i.maxWidth),a&&(e.height=i.maxHeight);var c=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,p=/sw|nw|w/.test(o),d=/nw|ne|n/.test(o);f&&p&&(e.left=c-i.minWidth),u&&p&&(e.left=c-i.maxWidth),l&&d&&(e.top=h-i.minHeight),a&&d&&(e.top=h-i.maxHeight);var v=!e.width&&!e.height;return v&&!e.left&&e.top?e.top=null:v&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){var t=this.options;if(!this._proportionallyResizeElements.length)return;var n=this.helper||this.element;for(var r=0;r
    ');var r=e.browser.msie&&e.browser.version<7,i=r?1:0,s=r?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+s,height:this.element.outerHeight()+s,position:"absolute",left:this.elementOffset.left-i+"px",top:this.elementOffset.top-i+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,t,n){return{width:this.originalSize.width+t}},w:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{top:s.top+n,height:i.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!="resize"&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","alsoResize",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=function(t){e(t).each(function(){var t=e(this);t.data("resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof i.alsoResize=="object"&&!i.alsoResize.parentNode?i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)}):s(i.alsoResize)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(t,n){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","animate",{stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r._proportionallyResizeElements,o=s.length&&/textarea/i.test(s[0].nodeName),u=o&&e.ui.hasScroll(s[0],"left")?0:r.sizeDiff.height,a=o?0:r.sizeDiff.width,f={width:r.size.width-a,height:r.size.height-u},l=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,c=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;r.element.animate(e.extend(f,c&&l?{top:c,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var n={width:parseInt(r.element.css("width"),10),height:parseInt(r.element.css("height"),10),top:parseInt(r.element.css("top"),10),left:parseInt(r.element.css("left"),10)};s&&s.length&&e(s[0]).css({width:n.width,height:n.height}),r._updateCache(n),r._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(t,r){var i=e(this).data("resizable"),s=i.options,o=i.element,u=s.containment,a=u instanceof e?u.get(0):/parent/.test(u)?o.parent().get(0):u;if(!a)return;i.containerElement=e(a);if(/document/.test(u)||u==document)i.containerOffset={left:0,top:0},i.containerPosition={left:0,top:0},i.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight};else{var f=e(a),l=[];e(["Top","Right","Left","Bottom"]).each(function(e,t){l[e]=n(f.css("padding"+t))}),i.containerOffset=f.offset(),i.containerPosition=f.position(),i.containerSize={height:f.innerHeight()-l[3],width:f.innerWidth()-l[1]};var c=i.containerOffset,h=i.containerSize.height,p=i.containerSize.width,d=e.ui.hasScroll(a,"left")?a.scrollWidth:p,v=e.ui.hasScroll(a)?a.scrollHeight:h;i.parentData={element:a,left:c.left,top:c.top,width:d,height:v}}},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.containerSize,o=r.containerOffset,u=r.size,a=r.position,f=r._aspectRatio||t.shiftKey,l={top:0,left:0},c=r.containerElement;c[0]!=document&&/static/.test(c.css("position"))&&(l=o),a.left<(r._helper?o.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-o.left:r.position.left-l.left),f&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=i.helper?o.left:0),a.top<(r._helper?o.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-o.top:r.position.top),f&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?o.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top;var h=Math.abs((r._helper?r.offset.left-l.left:r.offset.left-l.left)+r.sizeDiff.width),p=Math.abs((r._helper?r.offset.top-l.top:r.offset.top-o.top)+r.sizeDiff.height),d=r.containerElement.get(0)==r.element.parent().get(0),v=/relative|absolute/.test(r.containerElement.css("position"));d&&v&&(h-=r.parentData.left),h+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-h,f&&(r.size.height=r.size.width/r.aspectRatio)),p+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-p,f&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.position,o=r.containerOffset,u=r.containerPosition,a=r.containerElement,f=e(r.helper),l=f.offset(),c=f.outerWidth()-r.sizeDiff.width,h=f.outerHeight()-r.sizeDiff.height;r._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h}),r._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h})}}),e.ui.plugin.add("resizable","ghost",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size;r.ghost=r.originalElement.clone(),r.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:""),r.ghost.appendTo(r.helper)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.ghost.css({position:"relative",height:r.size.height,width:r.size.width})},stop:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.helper&&r.helper.get(0).removeChild(r.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size,o=r.originalSize,u=r.originalPosition,a=r.axis,f=i._aspectRatio||t.shiftKey;i.grid=typeof i.grid=="number"?[i.grid,i.grid]:i.grid;var l=Math.round((s.width-o.width)/(i.grid[0]||1))*(i.grid[0]||1),c=Math.round((s.height-o.height)/(i.grid[1]||1))*(i.grid[1]||1);/^(se|s|e)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c):/^(ne)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c):/^(sw)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.left=u.left-l):(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c,r.position.left=u.left-l)}});var n=function(e){return parseInt(e,10)||0},r=function(e){return!isNaN(parseInt(e,10))}})(jQuery);(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.9.0",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var t=this;this.element.addClass("ui-selectable"),this.dragged=!1;var n;this.refresh=function(){n=e(t.options.filter,t.element[0]),n.addClass("ui-selectee"),n.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=n.addClass("ui-selectee"),this._mouseInit(),this.helper=e("
    ")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;var r=this.options;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().andSelf().each(function(){var r=e.data(this,"selectable-item");if(r){var i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected");return r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?n._trigger("selecting",t,{selecting:r.element}):n._trigger("unselecting",t,{unselecting:r.element}),!1}})},_mouseDrag:function(t){var n=this;this.dragged=!0;if(this.options.disabled)return;var r=this.options,i=this.opos[0],s=this.opos[1],o=t.pageX,u=t.pageY;if(i>o){var a=o;o=i,i=a}if(s>u){var a=u;u=s,s=a}return this.helper.css({left:i,top:s,width:o-i,height:u-s}),this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!a||a.element==n.element[0])return;var f=!1;r.tolerance=="touch"?f=!(a.left>o||a.rightu||a.bottomi&&a.rights&&a.bottom").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(r.range==="min"||r.range==="max"?" ui-slider-range-"+r.range:"")));for(t=i.length;tn&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(e){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r,i){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.0",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+fs&&t+le[this.floating?"width":"height"]?c:s0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");for(var t=0;t=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else if(this.currentContainer!=this.containers[r]){var s=1e4,o=null,u=this.positionAbs[this.containers[r].floating?"left":"top"];for(var a=this.items.length-1;a>=0;a--){if(!e.contains(this.containers[r].element[0],this.items[a].item[0]))continue;var f=this.containers[r].floating?this.items[a].item.offset().left:this.items[a].item.offset().top;Math.abs(f-u)0?"down":"up")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.browser.msie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.leftthis.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.topthis.containment[3]?u-this.offset.click.topthis.containment[2]?a-this.offset.click.left=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.uiSpinner.addClass("ui-state-active"),this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.uiSpinner.removeClass("ui-state-active"),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this._hoverable(e),this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""+""+""+""+""},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e1&&e.href.replace(r,"")===location.href.replace(r,"")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.0",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t,n=this,r=this.options,i=r.active;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",r.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(i===null){location.hash&&this.anchors.each(function(e,t){if(t.hash===location.hash)return i=e,!1}),i===null&&(i=this.tabs.filter(".ui-tabs-active").index());if(i===null||i===-1)i=this.tabs.length?0:!1}i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),i===-1&&(i=r.collapsible?!1:0)),r.active=i,!r.collapsible&&r.active===!1&&this.anchors.length&&(r.active=0),e.isArray(r.disabled)&&(r.disabled=e.unique(r.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return n.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(r.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t,n=this.options,r=this.tablist.children(":has(a[href])");n.disabled=e.map(r.filter(".ui-state-disabled"),function(e){return r.index(e)}),this._processTabs(),n.active===!1||!this.anchors.length?(n.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===n.disabled.length?(n.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,n.active-1),!1)):n.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("
    ").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t,n){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e,t){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"Loading…"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"
  • #{label}
  • "},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\{href\}/g,n).replace(/#\{label\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"
    "},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(e){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r=this._superApply(arguments);return r?(e==="beforeActivate"&&n.newTab.length?r=this._super("select",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()}):e==="activate"&&n.newTab.length&&(r=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),r):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(e){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.0",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]",position:{my:"left+15 center",at:"right center",collision:"flipfit flipfit"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={}},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=e(t?t.target:this.element).closest(this.options.items);if(!n.length)return;if(this.options.track&&n.data("ui-tooltip-id")){this._find(n).position(e.extend({of:n},this.options.position)),this._off(this.document,"mousemove");return}n.attr("title")&&n.data("ui-tooltip-title",n.attr("title")),n.data("tooltip-open",!0),this._updateContent(n,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("tooltip-open"))return;i._delay(function(){this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function u(e){o.of=e,s.position(o)}var s,o;if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.originalEvent.type)?(o=e.extend({},this.options.position),this._on(this.document,{mousemove:u}),u(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this._trigger("open",t,{tooltip:s}),this._on(r,{mouseleave:"close",focusout:"close",keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}}})},close:function(t,n){var i=this,s=e(t?t.currentTarget:this.element),o=this._find(s);if(this.closing)return;if(!n&&t&&t.type!=="focusout"&&this.document[0].activeElement===s[0])return;s.data("ui-tooltip-title")&&s.attr("title",s.data("ui-tooltip-title")),r(s),o.stop(!0),this._hide(o,this.options.hide,function(){e(this).remove(),delete i.tooltips[this.id]}),s.removeData("tooltip-open"),this._off(s,"mouseleave focusout keyup"),this._off(this.document,"mousemove"),this.closing=!0,this._trigger("close",t,{tooltip:o}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("
    ").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("
    ").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery); \ No newline at end of file diff --git a/api/lib/jquery.js b/api/lib/jquery.js new file mode 100644 index 0000000..bc3fbc8 --- /dev/null +++ b/api/lib/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.2 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
    a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
    t
    ",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
    ",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
    ",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

    ",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
    ","
    "]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
    ").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/api/lib/jquery.layout.js b/api/lib/jquery.layout.js new file mode 100644 index 0000000..d5e008d --- /dev/null +++ b/api/lib/jquery.layout.js @@ -0,0 +1,5486 @@ +/** + * @preserve jquery.layout 1.3.0 - Release Candidate 30.62 + * $Date: 2012-08-04 08:00:00 (Thu, 23 Aug 2012) $ + * $Rev: 303006 $ + * + * Copyright (c) 2012 + * Fabrizio Balliano (http://www.fabrizioballiano.net) + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * Changelog: http://layout.jquery-dev.net/changelog.cfm#1.3.0.rc30.62 + * NOTE: This is a short-term release to patch a couple of bugs. + * These bugs are listed as officially fixed in RC30.7, which will be released shortly. + * + * Docs: http://layout.jquery-dev.net/documentation.html + * Tips: http://layout.jquery-dev.net/tips.html + * Help: http://groups.google.com/group/jquery-ui-layout + */ + +/* JavaDoc Info: http://code.google.com/closure/compiler/docs/js-for-compiler.html + * {!Object} non-nullable type (never NULL) + * {?string} nullable type (sometimes NULL) - default for {Object} + * {number=} optional parameter + * {*} ALL types + */ + +// NOTE: For best readability, view with a fixed-width font and tabs equal to 4-chars + +;(function ($) { + +// alias Math methods - used a lot! +var min = Math.min +, max = Math.max +, round = Math.floor + +, isStr = function (v) { return $.type(v) === "string"; } + +, runPluginCallbacks = function (Instance, a_fn) { + if ($.isArray(a_fn)) + for (var i=0, c=a_fn.length; i
    ').appendTo("body"); + var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight }; + $c.remove(); + window.scrollbarWidth = d.width; + window.scrollbarHeight = d.height; + return dim.match(/^(width|height)$/) ? d[dim] : d; + } + + + /** + * Returns hash container 'display' and 'visibility' + * + * @see $.swap() - swaps CSS, runs callback, resets CSS + */ +, showInvisibly: function ($E, force) { + if ($E && $E.length && (force || $E.css('display') === "none")) { // only if not *already hidden* + var s = $E[0].style + // save ONLY the 'style' props because that is what we must restore + , CSS = { display: s.display || '', visibility: s.visibility || '' }; + // show element 'invisibly' so can be measured + $E.css({ display: "block", visibility: "hidden" }); + return CSS; + } + return {}; + } + + /** + * Returns data for setting size of an element (container or a pane). + * + * @see _create(), onWindowResize() for container, plus others for pane + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc + */ +, getElementDimensions: function ($E) { + var + d = {} // dimensions hash + , x = d.css = {} // CSS hash + , i = {} // TEMP insets + , b, p // TEMP border, padding + , N = $.layout.cssNum + , off = $E.offset() + ; + d.offsetLeft = off.left; + d.offsetTop = off.top; + + $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge + b = x["border" + e] = $.layout.borderWidth($E, e); + p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e); + i[e] = b + p; // total offset of content from outer side + d["inset"+ e] = p; // eg: insetLeft = paddingLeft + }); + + d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize + d.offsetHeight = $E.innerHeight(); // ditto + d.outerWidth = $E.outerWidth(); + d.outerHeight = $E.outerHeight(); + d.innerWidth = max(0, d.outerWidth - i.Left - i.Right); + d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom); + + x.width = $E.width(); + x.height = $E.height(); + x.top = N($E,"top",true); + x.bottom = N($E,"bottom",true); + x.left = N($E,"left",true); + x.right = N($E,"right",true); + + //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0; + + return d; + } + +, getElementCSS: function ($E, list) { + var + CSS = {} + , style = $E[0].style + , props = list.split(",") + , sides = "Top,Bottom,Left,Right".split(",") + , attrs = "Color,Style,Width".split(",") + , p, s, a, i, j, k + ; + for (i=0; i < props.length; i++) { + p = props[i]; + if (p.match(/(border|padding|margin)$/)) + for (j=0; j < 4; j++) { + s = sides[j]; + if (p === "border") + for (k=0; k < 3; k++) { + a = attrs[k]; + CSS[p+s+a] = style[p+s+a]; + } + else + CSS[p+s] = style[p+s]; + } + else + CSS[p] = style[p]; + }; + return CSS + } + + /** + * Return the innerWidth for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerWidth of the elem by subtracting padding and borders + */ +, cssWidth: function ($E, outerWidth) { + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerWidth <= 0) return 0; + + if (!$.layout.browser.boxModel) return outerWidth; + + // strip border and padding from outerWidth to get CSS Width + var b = $.layout.borderWidth + , n = $.layout.cssNum + , W = outerWidth + - b($E, "Left") + - b($E, "Right") + - n($E, "paddingLeft") + - n($E, "paddingRight"); + + return max(0,W); + } + + /** + * Return the innerHeight for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerHeight of the elem by subtracting padding and borders + */ +, cssHeight: function ($E, outerHeight) { + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerHeight <= 0) return 0; + + if (!$.layout.browser.boxModel) return outerHeight; + + // strip border and padding from outerHeight to get CSS Height + var b = $.layout.borderWidth + , n = $.layout.cssNum + , H = outerHeight + - b($E, "Top") + - b($E, "Bottom") + - n($E, "paddingTop") + - n($E, "paddingBottom"); + + return max(0,H); + } + + /** + * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist + * + * @see Called by many methods + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {string} prop The name of the CSS property, eg: top, width, etc. + * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0 + * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width) + */ +, cssNum: function ($E, prop, allowAuto) { + if (!$E.jquery) $E = $($E); + var CSS = $.layout.showInvisibly($E) + , p = $.css($E[0], prop, true) + , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0); + $E.css( CSS ); // RESET + return v; + } + +, borderWidth: function (el, side) { + if (el.jquery) el = el[0]; + var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left + return $.css(el, b+"Style", true) === "none" ? 0 : (parseInt($.css(el, b+"Width", true), 10) || 0); + } + + /** + * Mouse-tracking utility - FUTURE REFERENCE + * + * init: if (!window.mouse) { + * window.mouse = { x: 0, y: 0 }; + * $(document).mousemove( $.layout.trackMouse ); + * } + * + * @param {Object} evt + * +, trackMouse: function (evt) { + window.mouse = { x: evt.clientX, y: evt.clientY }; + } + */ + + /** + * SUBROUTINE for preventPrematureSlideClose option + * + * @param {Object} evt + * @param {Object=} el + */ +, isMouseOverElem: function (evt, el) { + var + $E = $(el || this) + , d = $E.offset() + , T = d.top + , L = d.left + , R = L + $E.outerWidth() + , B = T + $E.outerHeight() + , x = evt.pageX // evt.clientX ? + , y = evt.pageY // evt.clientY ? + ; + // if X & Y are < 0, probably means is over an open SELECT + return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B)); + } + + /** + * Message/Logging Utility + * + * @example $.layout.msg("My message"); // log text + * @example $.layout.msg("My message", true); // alert text + * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title + * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR- + * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data + * + * @param {(Object|string)} info String message OR Hash/Array + * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped + * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped + * @param {Object=} [debugOpts] Extra options for debug output + */ +, msg: function (info, popup, debugTitle, debugOpts) { + if ($.isPlainObject(info) && window.debugData) { + if (typeof popup === "string") { + debugOpts = debugTitle; + debugTitle = popup; + } + else if (typeof debugTitle === "object") { + debugOpts = debugTitle; + debugTitle = null; + } + var t = debugTitle || "log( )" + , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts); + if (popup === true || o.display) + debugData( info, t, o ); + else if (window.console) + console.log(debugData( info, t, o )); + } + else if (popup) + alert(info); + else if (window.console) + console.log(info); + else { + var id = "#layoutLogger" + , $l = $(id); + if (!$l.length) + $l = createLog(); + $l.children("ul").append('
  • '+ info.replace(/\/g,">") +'
  • '); + } + + function createLog () { + var pos = $.support.fixedPosition ? 'fixed' : 'absolute' + , $e = $('
    ' + + '
    ' + + 'XLayout console.log
    ' + + '
      ' + + '
      ' + ).appendTo("body"); + $e.css('left', $(window).width() - $e.outerWidth() - 5) + if ($.ui.draggable) $e.draggable({ handle: ':first-child' }); + return $e; + }; + } + +}; + +// DEFAULT OPTIONS +$.layout.defaults = { +/* + * LAYOUT & LAYOUT-CONTAINER OPTIONS + * - none of these options are applicable to individual panes + */ + name: "" // Not required, but useful for buttons and used for the state-cookie +, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested +, containerClass: "ui-layout-container" // layout-container element +, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark) +, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event +, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky +, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized +, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific +, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific +, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements +, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized +, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload +, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload +, initPanes: true // false = DO NOT initialize the panes onLoad - will init later +, showErrorMessages: true // enables fatal error messages to warn developers of common errors +, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code! +// Changing this zIndex value will cause other zIndex values to automatically change +, zIndex: null // the PANE zIndex - resizers and masks will be +1 +// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships +, zIndexes: { // set _default_ z-index values here... + pane_normal: 0 // normal z-index for panes + , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing + , resizer_normal: 2 // normal z-index for resizer-bars + , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open' + , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer + , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged' + } +, errors: { + pane: "pane" // description of "layout pane element" - used only in error messages + , selector: "selector" // description of "jQuery-selector" - used only in error messages + , addButtonError: "Error Adding Button \n\nInvalid " + , containerMissing: "UI Layout Initialization Error\n\nThe specified layout-container does not exist." + , centerPaneMissing: "UI Layout Initialization Error\n\nThe center-pane element does not exist.\n\nThe center-pane is a required element." + , noContainerHeight: "UI Layout Initialization Warning\n\nThe layout-container \"CONTAINER\" has no height.\n\nTherefore the layout is 0-height and hence 'invisible'!" + , callbackError: "UI Layout Callback Error\n\nThe EVENT callback is not a valid function." + } +/* + * PANE DEFAULT SETTINGS + * - settings under the 'panes' key become the default settings for *all panes* + * - ALL pane-options can also be set specifically for each panes, which will override these 'default values' + */ +, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings' + applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity + , closable: true // pane can open & close + , resizable: true // when open, pane can be resized + , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out + , initClosed: false // true = init pane as 'closed' + , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing + // SELECTORS + //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane + , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane! + , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content' + , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector) + // GENERIC ROOT-CLASSES - for auto-generated classNames + , paneClass: "ui-layout-pane" // Layout Pane + , resizerClass: "ui-layout-resizer" // Resizer Bar + , togglerClass: "ui-layout-toggler" // Toggler Button + , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin' + // ELEMENT SIZE & SPACING + //, size: 100 // MUST be pane-specific -initial size of pane + , minSize: 0 // when manually resizing a pane + , maxSize: 0 // ditto, 0 = no limit + , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open' + , spacing_closed: 6 // ditto - when pane is 'closed' + , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides + , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden' + , togglerAlign_open: "center" // top/left, bottom/right, center, OR... + , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right + , togglerContent_open: "" // text or HTML to put INSIDE the toggler + , togglerContent_closed: "" // ditto + // RESIZING OPTIONS + , resizerDblClickToggle: true // + , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes + , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed + , resizerDragOpacity: 1 // option for ui.draggable + //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar + , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES + , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask + , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes + , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20] + , livePaneResizing: false // true = LIVE Resizing as resizer is dragged + , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged + , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance + // SLIDING OPTIONS + , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding' + , slideTrigger_open: "click" // click, dblclick, mouseenter + , slideTrigger_close: "mouseleave"// click, mouseleave + , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open + , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!) + , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show? + , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening + , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + // PANE-SPECIFIC TIPS & MESSAGES + , tips: { + Open: "Open" // eg: "Open Pane" + , Close: "Close" + , Resize: "Resize" + , Slide: "Slide Open" + , Pin: "Pin" + , Unpin: "Un-Pin" + , noRoomToOpen: "Not enough room to show this panel." // alert if user tries to open a pane that cannot + , minSizeWarning: "Panel has reached its minimum size" // displays in browser statusbar + , maxSizeWarning: "Panel has reached its maximum size" // ditto + } + // HOT-KEYS & MISC + , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver + , enableCursorHotkey: true // enabled 'cursor' hotkeys + //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character + , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT' + // PANE ANIMATION + // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed + , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size' + , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration + , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 } + , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation + , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called + /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set: + fxName_open: "slide" // 'Open' pane animation + fnName_close: "slide" // 'Close' pane animation + fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true + fxSpeed_open: null + fxSpeed_close: null + fxSpeed_size: null + fxSettings_open: {} + fxSettings_close: {} + fxSettings_size: {} + */ + // CHILD/NESTED LAYOUTS + , childOptions: null // Layout-options for nested/child layout - even {} is valid as options + , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization + , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed + , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized + // EVENT TRIGGERING + , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes + , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true + // PANE CALLBACKS + , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start + , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end + , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start + , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end + , onopen_start: null // CALLBACK when pane STARTS to Open + , onopen_end: null // CALLBACK when pane ENDS being Opened + , onclose_start: null // CALLBACK when pane STARTS to Close + , onclose_end: null // CALLBACK when pane ENDS being Closed + , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON*** + , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON*** + , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS + , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS + , onswap_start: null // CALLBACK when pane STARTS to Swap + , onswap_end: null // CALLBACK when pane ENDS being Swapped + , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized + , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized + } +/* + * PANE-SPECIFIC SETTINGS + * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes' + * - all options under the 'panes' key can also be set specifically for any pane + * - most options under the 'panes' key apply only to 'border-panes' - NOT the center-pane + */ +, north: { + paneSelector: ".ui-layout-north" + , size: "auto" // eg: "auto", "30%", .30, 200 + , resizerCursor: "n-resize" // custom = url(myCursor.cur) + , customHotkey: "" // EITHER a charCode (43) OR a character ("o") + } +, south: { + paneSelector: ".ui-layout-south" + , size: "auto" + , resizerCursor: "s-resize" + , customHotkey: "" + } +, east: { + paneSelector: ".ui-layout-east" + , size: 200 + , resizerCursor: "e-resize" + , customHotkey: "" + } +, west: { + paneSelector: ".ui-layout-west" + , size: 200 + , resizerCursor: "w-resize" + , customHotkey: "" + } +, center: { + paneSelector: ".ui-layout-center" + , minWidth: 0 + , minHeight: 0 + } +}; + +$.layout.optionsMap = { + // layout/global options - NOT pane-options + layout: ("stateManagement,effects,zIndexes,errors," + + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages," + + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay," + + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload").split(",") +// borderPanes: [ ALL options that are NOT specified as 'layout' ] + // default.panes options that apply to the center-pane (most options apply _only_ to border-panes) +, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad," + + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing," + + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout," + + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",") + // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key +, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",") +}; + +/** + * Processes options passed in converts flat-format data into subkey (JSON) format + * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName + * Plugins may also call this method so they can transform their own data + * + * @param {!Object} hash Data/options passed by user - may be a single level or nested levels + * @return {Object} Returns hash of minWidth & minHeight + */ +$.layout.transformData = function (hash) { + var json = { panes: {}, center: {} } // init return object + , data, branch, optKey, keys, key, val, i, c; + + if (typeof hash !== "object") return json; // no options passed + + // convert all 'flat-keys' to 'sub-key' format + for (optKey in hash) { + branch = json; + data = $.layout.optionsMap.layout; + val = hash[ optKey ]; + keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration + c = keys.length - 1; + // convert underscore-delimited to subkeys + for (i=0; i <= c; i++) { + key = keys[i]; + if (i === c) + branch[key] = val; + else if (!branch[key]) + branch[key] = {}; // create the subkey + // recurse to sub-key for next loop - if not done + branch = branch[key]; + } + } + + return json; +}; + +// INTERNAL CONFIG DATA - DO NOT CHANGE THIS! +$.layout.backwardCompatibility = { + // data used by renameOldOptions() + map: { + // OLD Option Name: NEW Option Name + applyDefaultStyles: "applyDemoStyles" + , resizeNestedLayout: "resizeChildLayout" + , resizeWhileDragging: "livePaneResizing" + , resizeContentWhileDragging: "liveContentResizing" + , triggerEventsWhileDragging: "triggerEventsDuringLiveResize" + , maskIframesOnResize: "maskContents" + , useStateCookie: "stateManagement.enabled" + , "cookie.autoLoad": "stateManagement.autoLoad" + , "cookie.autoSave": "stateManagement.autoSave" + , "cookie.keys": "stateManagement.stateKeys" + , "cookie.name": "stateManagement.cookie.name" + , "cookie.domain": "stateManagement.cookie.domain" + , "cookie.path": "stateManagement.cookie.path" + , "cookie.expires": "stateManagement.cookie.expires" + , "cookie.secure": "stateManagement.cookie.secure" + // OLD Language options + , noRoomToOpenTip: "tips.noRoomToOpen" + , togglerTip_open: "tips.Close" // open = Close + , togglerTip_closed: "tips.Open" // closed = Open + , resizerTip: "tips.Resize" + , sliderTip: "tips.Slide" + } + +/** +* @param {Object} opts +*/ +, renameOptions: function (opts) { + var map = $.layout.backwardCompatibility.map + , oldData, newData, value + ; + for (var itemPath in map) { + oldData = getBranch( itemPath ); + value = oldData.branch[ oldData.key ]; + if (value !== undefined) { + newData = getBranch( map[itemPath], true ); + newData.branch[ newData.key ] = value; + delete oldData.branch[ oldData.key ]; + } + } + + /** + * @param {string} path + * @param {boolean=} [create=false] Create path if does not exist + */ + function getBranch (path, create) { + var a = path.split(".") // split keys into array + , c = a.length - 1 + , D = { branch: opts, key: a[c] } // init branch at top & set key (last item) + , i = 0, k, undef; + for (; i 0) { + if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + // make hidden, then visible to 'refresh' display after animation + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerHeight + * @param {boolean=} [autoHide=false] + */ +, setOuterHeight = function (el, outerHeight, autoHide) { + var $E = el, h; + if (isStr(el)) $E = $Ps[el]; // west + else if (!el.jquery) $E = $(el); + h = cssH($E, outerHeight); + $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent + if (h > 0 && $E.innerWidth() > 0) { + if (autoHide && $E.data('autoHidden')) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerSize + * @param {boolean=} [autoHide=false] + */ +, setOuterSize = function (el, outerSize, autoHide) { + if (_c[pane].dir=="horz") // pane = north or south + setOuterHeight(el, outerSize, autoHide); + else // pane = east or west + setOuterWidth(el, outerSize, autoHide); + } + + + /** + * Converts any 'size' params to a pixel/integer size, if not already + * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated + * + /** + * @param {string} pane + * @param {(string|number)=} size + * @param {string=} [dir] + * @return {number} + */ +, _parseSize = function (pane, size, dir) { + if (!dir) dir = _c[pane].dir; + + if (isStr(size) && size.match(/%/)) + size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal + + if (size === 0) + return 0; + else if (size >= 1) + return parseInt(size, 10); + + var o = options, avail = 0; + if (dir=="horz") // north or south or center.minHeight + avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0); + else if (dir=="vert") // east or west or center.minWidth + avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0); + + if (size === -1) // -1 == 100% + return avail; + else if (size > 0) // percentage, eg: .25 + return round(avail * size); + else if (pane=="center") + return 0; + else { // size < 0 || size=='auto' || size==Missing || size==Invalid + // auto-size the pane + var dim = (dir === "horz" ? "height" : "width") + , $P = $Ps[pane] + , $C = dim === 'height' ? $Cs[pane] : false + , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden + , szP = $P.css(dim) // SAVE current pane size + , szC = $C ? $C.css(dim) : 0 // SAVE current content size + ; + $P.css(dim, "auto"); + if ($C) $C.css(dim, "auto"); + size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE + $P.css(dim, szP).css(vis); // RESET size & visibility + if ($C) $C.css(dim, szC); + return size; + } + } + + /** + * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added + * + * @param {(string|!Object)} pane + * @param {boolean=} [inclSpace=false] + * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes + */ +, getPaneSize = function (pane, inclSpace) { + var + $P = $Ps[pane] + , o = options[pane] + , s = state[pane] + , oSp = (inclSpace ? o.spacing_open : 0) + , cSp = (inclSpace ? o.spacing_closed : 0) + ; + if (!$P || s.isHidden) + return 0; + else if (s.isClosed || (s.isSliding && inclSpace)) + return cSp; + else if (_c[pane].dir === "horz") + return $P.outerHeight() + oSp; + else // dir === "vert" + return $P.outerWidth() + oSp; + } + + /** + * Calculate min/max pane dimensions and limits for resizing + * + * @param {string} pane + * @param {boolean=} [slide=false] + */ +, setSizeLimits = function (pane, slide) { + if (!isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , dir = c.dir + , side = c.side.toLowerCase() + , type = c.sizeType.toLowerCase() + , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param + , $P = $Ps[pane] + , paneSpacing = o.spacing_open + // measure the pane on the *opposite side* from this pane + , altPane = _c.oppositeEdge[pane] + , altS = state[altPane] + , $altP = $Ps[altPane] + , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth())) + , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0) + // limitSize prevents this pane from 'overlapping' opposite pane + , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth) + , minCenterDims = cssMinDims("center") + , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth) + // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them + , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing))) + , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize ) + , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize ) + , r = s.resizerPosition = {} // used to set resizing limits + , top = sC.insetTop + , left = sC.insetLeft + , W = sC.innerWidth + , H = sC.innerHeight + , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east + ; + switch (pane) { + case "north": r.min = top + minSize; + r.max = top + maxSize; + break; + case "west": r.min = left + minSize; + r.max = left + maxSize; + break; + case "south": r.min = top + H - maxSize - rW; + r.max = top + H - minSize - rW; + break; + case "east": r.min = left + W - maxSize - rW; + r.max = left + W - minSize - rW; + break; + }; + } + + /** + * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes + * + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height + */ +, calcNewCenterPaneDims = function () { + var d = { + top: getPaneSize("north", true) // true = include 'spacing' value for pane + , bottom: getPaneSize("south", true) + , left: getPaneSize("west", true) + , right: getPaneSize("east", true) + , width: 0 + , height: 0 + }; + + // NOTE: sC = state.container + // calc center-pane outer dimensions + d.width = sC.innerWidth - d.left - d.right; // outerWidth + d.height = sC.innerHeight - d.bottom - d.top; // outerHeight + // add the 'container border/padding' to get final positions relative to the container + d.top += sC.insetTop; + d.bottom += sC.insetBottom; + d.left += sC.insetLeft; + d.right += sC.insetRight; + + return d; + } + + + /** + * @param {!Object} el + * @param {boolean=} [allStates=false] + */ +, getHoverClasses = function (el, allStates) { + var + $El = $(el) + , type = $El.data("layoutRole") + , pane = $El.data("layoutEdge") + , o = options[pane] + , root = o[type +"Class"] + , _pane = "-"+ pane // eg: "-west" + , _open = "-open" + , _closed = "-closed" + , _slide = "-sliding" + , _hover = "-hover " // NOTE the trailing space + , _state = $El.hasClass(root+_closed) ? _closed : _open + , _alt = _state === _closed ? _open : _closed + , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover) + ; + if (allStates) // when 'removing' classes, also remove alternate-state classes + classes += (root+_alt+_hover) + (root+_pane+_alt+_hover); + + if (type=="resizer" && $El.hasClass(root+_slide)) + classes += (root+_slide+_hover) + (root+_pane+_slide+_hover); + + return $.trim(classes); + } +, addHover = function (evt, el) { + var $E = $(el || this); + if (evt && $E.data("layoutRole") === "toggler") + evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar + $E.addClass( getHoverClasses($E) ); + } +, removeHover = function (evt, el) { + var $E = $(el || this); + $E.removeClass( getHoverClasses($E, true) ); + } + +, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter + if ($.fn.disableSelection) + $("body").disableSelection(); + } +, onResizerLeave = function (evt, el) { + var + e = el || this // el is only passed when called by the timer + , pane = $(e).data("layoutEdge") + , name = pane +"ResizerLeave" + ; + timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set + timer.clear(name); // cancel enableSelection timer - may re/set below + // this method calls itself on a timer because it needs to allow + // enough time for dragging to kick-in and set the isResizing flag + // dragging has a 100ms delay set, so this delay must be >100 + if (!el) // 1st call - mouseleave event + timer.set(name, function(){ onResizerLeave(evt, e); }, 200); + // if user is resizing, then dragStop will enableSelection(), so can skip it here + else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer + $("body").enableSelection(); + } + +/* + * ########################### + * INITIALIZATION METHODS + * ########################### + */ + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see none - triggered onInit + * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort + */ +, _create = function () { + // initialize config/options + initOptions(); + var o = options; + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // init plugins for this layout, if there are any (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onCreate ); + + // options & state have been initialized, so now run beforeLoad callback + // onload will CANCEL layout creation if it returns false + if (false === _runCallbacks("onload_start")) + return 'cancel'; + + // initialize the container element + _initContainer(); + + // bind hotkey function - keyDown - if required + initHotkeys(); + + // bind window.onunload + $(window).bind("unload."+ sID, unload); + + // init plugins for this layout, if there are any (eg: customButtons) + runPluginCallbacks( Instance, $.layout.onLoad ); + + // if layout elements are hidden, then layout WILL NOT complete initialization! + // initLayoutElements will set initialized=true and run the onload callback IF successful + if (o.initPanes) _initLayoutElements(); + + delete state.creatingLayout; + + return state.initialized; + } + + /** + * Initialize the layout IF not already + * + * @see All methods in Instance run this test + * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet) + */ +, isInitialized = function () { + if (state.initialized || state.creatingLayout) return true; // already initialized + else return _initLayoutElements(); // try to init panes NOW + } + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see _create() & isInitialized + * @return An object pointer to the instance created + */ +, _initLayoutElements = function (retry) { + // initialize config/options + var o = options; + + // CANNOT init panes inside a hidden container! + if (!$N.is(":visible")) { + // handle Chrome bug where popup window 'has no height' + // if layout is BODY element, try again in 50ms + // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html + if ( !retry && browser.webkit && $N[0].tagName === "BODY" ) + setTimeout(function(){ _initLayoutElements(true); }, 50); + return false; + } + + // a center pane is required, so make sure it exists + if (!getPane("center").length) { + return _log( o.errors.centerPaneMissing ); + } + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // update Container dims + $.extend(sC, elDims( $N )); + + // initialize all layout elements + initPanes(); // size & position panes - calls initHandles() - which calls initResizable() + + if (o.scrollToBookmarkOnLoad) { + var l = self.location; + if (l.hash) l.replace( l.hash ); // scrollTo Bookmark + } + + // check to see if this layout 'nested' inside a pane + if (Instance.hasParentLayout) + o.resizeWithWindow = false; + // bind resizeAll() for 'this layout instance' to window.resize event + else if (o.resizeWithWindow) + $(window).bind("resize."+ sID, windowResize); + + delete state.creatingLayout; + state.initialized = true; + + // init plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onReady ); + + // now run the onload callback, if exists + _runCallbacks("onload_end"); + + return true; // elements initialized successfully + } + + /** + * Initialize nested layouts - called when _initLayoutElements completes + * + * NOT CURRENTLY USED + * + * @see _initLayoutElements + * @return An object pointer to the instance created + */ +, _initChildLayouts = function () { + $.each(_c.allPanes, function (idx, pane) { + if (options[pane].initChildLayout) + createChildLayout( pane ); + }); + } + + /** + * Initialize nested layouts for a specific pane - can optionally pass layout-options + * + * @see _initChildLayouts + * @param {string|Object} evt_or_pane The pane being opened, ie: north, south, east, or west + * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions + * @return An object pointer to the layout instance created - or null + */ +, createChildLayout = function (evt_or_pane, opts) { + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , C = children + ; + if ($P) { + var $C = $Cs[pane] + , o = opts || options[pane].childOptions + , d = "layout" + // determine which element is supposed to be the 'child container' + // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane + , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P) + , containerFound = $Cont.length + // see if a child-layout ALREADY exists on this element + , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null + ; + // if no layout exists, but childOptions are set, try to create the layout now + if (!child && containerFound && o) + child = C[pane] = $Cont.eq(0).layout(o) || null; + if (child) + child.hasParentLayout = true; // set parent-flag in child + } + Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null + } + +, windowResize = function () { + var delay = Number(options.resizeWithWindowDelay); + if (delay < 10) delay = 100; // MUST have a delay! + // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway + timer.clear("winResize"); // if already running + timer.set("winResize", function(){ + timer.clear("winResize"); + timer.clear("winResizeRepeater"); + var dims = elDims( $N ); + // only trigger resizeAll() if container has changed size + if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight) + resizeAll(); + }, delay); + // ALSO set fixed-delay timer, if not already running + if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater(); + } + +, setWindowResizeRepeater = function () { + var delay = Number(options.resizeWithWindowMaxDelay); + if (delay > 0) + timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay); + } + +, unload = function () { + var o = options; + + _runCallbacks("onunload_start"); + + // trigger plugin callabacks for this layout (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onUnload ); + + _runCallbacks("onunload_end"); + } + + /** + * Validate and initialize container CSS and events + * + * @see _create() + */ +, _initContainer = function () { + var + N = $N[0] + , tag = sC.tagName = N.tagName + , id = sC.id = N.id + , cls = sC.className = N.className + , o = options + , name = o.name + , fullPage= (tag === "BODY") + , props = "overflow,position,margin,padding,border" + , css = "layoutCSS" + , CSS = {} + , hid = "hidden" // used A LOT! + // see if this container is a 'pane' inside an outer-layout + , parent = $N.data("parentLayout") // parent-layout Instance + , pane = $N.data("layoutEdge") // pane-name in parent-layout + , isChild = parent && pane + ; + // sC -> state.container + sC.selector = $N.selector.split(".slice")[0]; + sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages + + $N .data({ + layout: Instance + , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID + }) + .addClass(o.containerClass) + ; + var layoutMethods = { + destroy: '' + , initPanes: '' + , resizeAll: 'resizeAll' + , resize: 'resizeAll' + }; + // loop hash and bind all methods - include layoutID namespacing + for (name in layoutMethods) { + $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]); + } + + // if this container is another layout's 'pane', then set child/parent pointers + if (isChild) { + // update parent flag + Instance.hasParentLayout = true; + // set pointers to THIS child-layout (Instance) in parent-layout + // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE + parent[pane].child = parent.children[pane] = $N.data("layout"); + } + + // SAVE original container CSS for use in destroy() + if (!$N.data(css)) { + // handle props like overflow different for BODY & HTML - has 'system default' values + if (fullPage) { + CSS = $.extend( elCSS($N, props), { + height: $N.css("height") + , overflow: $N.css("overflow") + , overflowX: $N.css("overflowX") + , overflowY: $N.css("overflowY") + }); + // ALSO SAVE CSS + var $H = $("html"); + $H.data(css, { + height: "auto" // FF would return a fixed px-size! + , overflow: $H.css("overflow") + , overflowX: $H.css("overflowX") + , overflowY: $H.css("overflowY") + }); + } + else // handle props normally for non-body elements + CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY"); + + $N.data(css, CSS); + } + + try { // format html/body if this is a full page layout + if (fullPage) { + $("html").css({ + height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + }); + $("body").css({ + position: "relative" + , height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + , margin: 0 + , padding: 0 // TODO: test whether body-padding could be handled? + , border: "none" // a body-border creates problems because it cannot be measured! + }); + + // set current layout-container dimensions + $.extend(sC, elDims( $N )); + } + else { // set required CSS for overflow and position + // ENSURE container will not 'scroll' + CSS = { overflow: hid, overflowX: hid, overflowY: hid } + var + p = $N.css("position") + , h = $N.css("height") + ; + // if this is a NESTED layout, then container/outer-pane ALREADY has position and height + if (!isChild) { + if (!p || !p.match(/fixed|absolute|relative/)) + CSS.position = "relative"; // container MUST have a 'position' + /* + if (!h || h=="auto") + CSS.height = "100%"; // container MUST have a 'height' + */ + } + $N.css( CSS ); + + // set current layout-container dimensions + if ( $N.is(":visible") ) { + $.extend(sC, elDims( $N )); + if (sC.innerHeight < 1) + _log( o.errors.noContainerHeight.replace(/CONTAINER/, sC.ref) ); + } + } + } catch (ex) {} + } + + /** + * Bind layout hotkeys - if options enabled + * + * @see _create() and addPane() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHotkeys = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + // bind keyDown to capture hotkeys, if option enabled for ANY pane + $.each(panes, function (i, pane) { + var o = options[pane]; + if (o.enableCursorHotkey || o.customHotkey) { + $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE + return false; // BREAK - binding was done + } + }); + } + + /** + * Build final OPTIONS data + * + * @see _create() + */ +, initOptions = function () { + var data, d, pane, key, val, i, c, o; + + // reprocess user's layout-options to have correct options sub-key structure + opts = $.layout.transformData( opts ); // panes = default subkey + + // auto-rename old options for backward compatibility + opts = $.layout.backwardCompatibility.renameAllOptions( opts ); + + // if user-options has 'panes' key (pane-defaults), clean it... + if (!$.isEmptyObject(opts.panes)) { + // REMOVE any pane-defaults that MUST be set per-pane + data = $.layout.optionsMap.noDefault; + for (i=0, c=data.length; i 0) { + z.pane_normal = zo; + z.content_mask = max(zo+1, z.content_mask); // MIN = +1 + z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2 + } + + // DELETE 'panes' key now that we are done - values were copied to EACH pane + delete options.panes; + + + function createFxOptions ( pane ) { + var o = options[pane] + , d = options.panes; + // ensure fxSettings key to avoid errors + if (!o.fxSettings) o.fxSettings = {}; + if (!d.fxSettings) d.fxSettings = {}; + + $.each(["_open","_close","_size"], function (i,n) { + var + sName = "fxName"+ n + , sSpeed = "fxSpeed"+ n + , sSettings = "fxSettings"+ n + // recalculate fxName according to specificity rules + , fxName = o[sName] = + o[sName] // options.west.fxName_open + || d[sName] // options.panes.fxName_open + || o.fxName // options.west.fxName + || d.fxName // options.panes.fxName + || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0 + ; + // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects + if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName]) + fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName + + // set vars for effects subkeys to simplify logic + var fx = options.effects[fxName] || {} // effects.slide + , fx_all = fx.all || null // effects.slide.all + , fx_pane = fx[pane] || null // effects.slide.west + ; + // create fxSpeed[_open|_close|_size] + o[sSpeed] = + o[sSpeed] // options.west.fxSpeed_open + || d[sSpeed] // options.west.fxSpeed_open + || o.fxSpeed // options.west.fxSpeed + || d.fxSpeed // options.panes.fxSpeed + || null // DEFAULT - let fxSetting.duration control speed + ; + // create fxSettings[_open|_close|_size] + o[sSettings] = $.extend( + true + , {} + , fx_all // effects.slide.all + , fx_pane // effects.slide.west + , d.fxSettings // options.panes.fxSettings + , o.fxSettings // options.west.fxSettings + , d[sSettings] // options.panes.fxSettings_open + , o[sSettings] // options.west.fxSettings_open + ); + }); + + // DONE creating action-specific-settings for this pane, + // so DELETE generic options - are no longer meaningful + delete o.fxName; + delete o.fxSpeed; + delete o.fxSettings; + } + } + + /** + * Initialize module objects, styling, size and position for all panes + * + * @see _initElements() + * @param {string} pane The pane to process + */ +, getPane = function (pane) { + var sel = options[pane].paneSelector + if (sel.substr(0,1)==="#") // ID selector + // NOTE: elements selected 'by ID' DO NOT have to be 'children' + return $N.find(sel).eq(0); + else { // class or other selector + var $P = $N.children(sel).eq(0); + // look for the pane nested inside a 'form' element + return $P.length ? $P : $N.children("form:first").children(sel).eq(0); + } + } + +, initPanes = function (evt) { + // stopPropagation if called by trigger("layoutinitpanes") - use evtPane utility + evtPane(evt); + + // NOTE: do north & south FIRST so we can measure their height - do center LAST + $.each(_c.allPanes, function (idx, pane) { + addPane( pane, true ); + }); + + // init the pane-handles NOW in case we have to hide or close the pane below + initHandles(); + + // now that all panes have been initialized and initially-sized, + // make sure there is really enough space available for each pane + $.each(_c.borderPanes, function (i, pane) { + if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN + setSizeLimits(pane); + makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit() + } + }); + // size center-pane AGAIN in case we 'closed' a border-pane in loop above + sizeMidPanes("center"); + + // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing! + // Before RC30.3, there was a 10ms delay here, but that caused layout + // to load asynchrously, which is BAD, so try skipping delay for now + + // process pane contents and callbacks, and init/resize child-layout if exists + $.each(_c.allPanes, function (i, pane) { + var o = options[pane]; + if ($Ps[pane]) { + if (state[pane].isVisible) { // pane is OPEN + sizeContent(pane); + // trigger pane.onResize if triggerEventsOnLoad = true + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); + } + // init childLayout - even if pane is not visible + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + }); + } + + /** + * Add a pane to the layout - subroutine of initPanes() + * + * @see initPanes() + * @param {string} pane The pane to process + * @param {boolean=} [force=false] Size content after init + */ +, addPane = function (pane, force) { + if (!force && !isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , fx = s.fx + , dir = c.dir + , spacing = o.spacing_open || 0 + , isCenter = (pane === "center") + , CSS = {} + , $P = $Ps[pane] + , size, minSize, maxSize + ; + // if pane-pointer already exists, remove the old one first + if ($P) + removePane( pane, false, true, false ); + else + $Cs[pane] = false; // init + + $P = $Ps[pane] = getPane(pane); + if (!$P.length) { + $Ps[pane] = false; // logic + return; + } + + // SAVE original Pane CSS + if (!$P.data("layoutCSS")) { + var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border"; + $P.data("layoutCSS", elCSS($P, props)); + } + + // create alias for pane data in Instance - initHandles will add more + Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] }; + + // add classes, attributes & events + $P .data({ + parentLayout: Instance // pointer to Layout Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "pane" + }) + .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal) + .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles + .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector' + .bind("mouseenter."+ sID, addHover ) + .bind("mouseleave."+ sID, removeHover ) + ; + var paneMethods = { + hide: '' + , show: '' + , toggle: '' + , close: '' + , open: '' + , slideOpen: '' + , slideClose: '' + , slideToggle: '' + , size: 'sizePane' + , sizePane: 'sizePane' + , sizeContent: '' + , sizeHandles: '' + , enableClosable: '' + , disableClosable: '' + , enableSlideable: '' + , disableSlideable: '' + , enableResizable: '' + , disableResizable: '' + , swapPanes: 'swapPanes' + , swap: 'swapPanes' + , move: 'swapPanes' + , removePane: 'removePane' + , remove: 'removePane' + , createChildLayout: '' + , resizeChildLayout: '' + , resizeAll: 'resizeAll' + , resizeLayout: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in paneMethods) { + $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]); + } + + // see if this pane has a 'scrolling-content element' + initContent(pane, false); // false = do NOT sizeContent() - called later + + if (!isCenter) { + // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden) + // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size' + size = s.size = _parseSize(pane, o.size); + minSize = _parseSize(pane,o.minSize) || 1; + maxSize = _parseSize(pane,o.maxSize) || 100000; + if (size > 0) size = max(min(size, maxSize), minSize); + + // state for border-panes + s.isClosed = false; // true = pane is closed + s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes + s.isResizing= false; // true = pane is in process of being resized + s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible! + + // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close + if (!s.pins) s.pins = []; + } + // states common to ALL panes + s.tagName = $P[0].tagName; + s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going) + s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically + s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic + + // set css-position to account for container borders & padding + switch (pane) { + case "north": CSS.top = sC.insetTop; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "south": CSS.bottom = sC.insetBottom; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes() + break; + case "east": CSS.right = sC.insetRight; // ditto + break; + case "center": // top, left, width & height set by sizeMidPanes() + } + + if (dir === "horz") // north or south pane + CSS.height = cssH($P, size); + else if (dir === "vert") // east or west pane + CSS.width = cssW($P, size); + //else if (isCenter) {} + + $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes + if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback + + // close or hide the pane if specified in settings + if (o.initClosed && o.closable && !o.initHidden) + close(pane, true, true); // true, true = force, noAnimation + else if (o.initHidden || o.initClosed) + hide(pane); // will be completely invisible - no resizer or spacing + else if (!s.noRoom) + // make the pane visible - in case was initially hidden + $P.css("display","block"); + // ELSE setAsOpen() - called later by initHandles() + + // RESET visibility now - pane will appear IF display:block + $P.css("visibility","visible"); + + // check option for auto-handling of pop-ups & drop-downs + if (o.showOverflowOnHover) + $P.hover( allowOverflow, resetOverflow ); + + // if manually adding a pane AFTER layout initialization, then... + if (state.initialized) { + initHandles( pane ); + initHotkeys( pane ); + resizeAll(); // will sizeContent if pane is visible + if (s.isVisible) { // pane is OPEN + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); // a previously existing childLayout + } + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + } + + /** + * Initialize module objects, styling, size and position for all resize bars and toggler buttons + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHandles = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + + // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV + $.each(panes, function (i, pane) { + var $P = $Ps[pane]; + $Rs[pane] = false; // INIT + $Ts[pane] = false; + if (!$P) return; // pane does not exist - skip + + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , paneId = o.paneSelector.substr(0,1) === "#" ? o.paneSelector.substr(1) : "" + , rClass = o.resizerClass + , tClass = o.togglerClass + , side = c.side.toLowerCase() + , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed) + , _pane = "-"+ pane // used for classNames + , _state = (s.isVisible ? "-open" : "-closed") // used for classNames + , I = Instance[pane] + // INIT RESIZER BAR + , $R = I.resizer = $Rs[pane] = $("
      ") + // INIT TOGGLER BUTTON + , $T = I.toggler = (o.closable ? $Ts[pane] = $("
      ") : false) + ; + + //if (s.isVisible && o.resizable) ... handled by initResizable + if (!s.isVisible && o.slidable) + $R.attr("title", o.tips.Slide).css("cursor", o.sliderCursor); + + $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer" + .attr("id", paneId ? paneId +"-resizer" : "" ) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "resizer" + }) + .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal) + .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles + .addClass(rClass +" "+ rClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead + .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter + .appendTo($N) // append DIV to container + ; + + if ($T) { + $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler" + .attr("id", paneId ? paneId +"-toggler" : "" ) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "toggler" + }) + .css(_c.togglers.cssReq) // add base/required styles + .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles + .addClass(tClass +" "+ tClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead + .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer + .appendTo($R) // append SPAN to resizer DIV + ; + // ADD INNER-SPANS TO TOGGLER + if (o.togglerContent_open) // ui-layout-open + $(""+ o.togglerContent_open +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .data("layoutRole", "togglerContent") + .data("layoutEdge", pane) + .addClass("content content-open") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead! + ; + if (o.togglerContent_closed) // ui-layout-closed + $(""+ o.togglerContent_closed +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .addClass("content content-closed") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead! + ; + // ADD TOGGLER.click/.hover + enableClosable(pane); + } + + // add Draggable events + initResizable(pane); + + // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open" + if (s.isVisible) + setAsOpen(pane); // onOpen will be called, but NOT onResize + else { + setAsClosed(pane); // onClose will be called + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + }); + + // SET ALL HANDLE DIMENSIONS + sizeHandles(); + } + + + /** + * Initialize scrolling ui-layout-content div - if exists + * + * @see initPane() - or externally after an Ajax injection + * @param {string} [pane] The pane to process + * @param {boolean=} [resize=true] Size content after init + */ +, initContent = function (pane, resize) { + if (!isInitialized()) return; + var + o = options[pane] + , sel = o.contentSelector + , I = Instance[pane] + , $P = $Ps[pane] + , $C + ; + if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent) + ? $P.find(sel).eq(0) // match 1-element only + : $P.children(sel).eq(0) + ; + if ($C && $C.length) { + $C.data("layoutRole", "content"); + // SAVE original Pane CSS + if (!$C.data("layoutCSS")) + $C.data("layoutCSS", elCSS($C, "height")); + $C.css( _c.content.cssReq ); + if (o.applyDemoStyles) { + $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div + $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane + } + state[pane].content = {}; // init content state + if (resize !== false) sizeContent(pane); + // sizeContent() is called AFTER init of all elements + } + else + I.content = $Cs[pane] = false; + } + + + /** + * Add resize-bars to all panes that specify it in options + * -dependancy: $.fn.resizable - will skip if not found + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initResizable = function (panes) { + var draggingAvailable = $.layout.plugins.draggable + , side // set in start() + ; + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (idx, pane) { + var o = options[pane]; + if (!draggingAvailable || !$Ps[pane] || !o.resizable) { + o.resizable = false; + return true; // skip to next + } + + var s = state[pane] + , z = options.zIndexes + , c = _c[pane] + , side = c.dir=="horz" ? "top" : "left" + , opEdge = _c.oppositeEdge[pane] + , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "") + , $P = $Ps[pane] + , $R = $Rs[pane] + , base = o.resizerClass + , lastPos = 0 // used when live-resizing + , r, live // set in start because may change + // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process + , resizerClass = base+"-drag" // resizer-drag + , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag + // 'helper' class is applied to the CLONED resizer-bar while it is being dragged + , helperClass = base+"-dragging" // resizer-dragging + , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging + , helperLimitClass = base+"-dragging-limit" // resizer-drag + , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag + , helperClassesSet = false // logic var + ; + + if (!s.isClosed) + $R.attr("title", o.tips.Resize) + .css("cursor", o.resizerCursor); // n-resize, s-resize, etc + + $R.draggable({ + containment: $N[0] // limit resizing to layout container + , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis + , delay: 0 + , distance: 1 + , grid: o.resizingGrid + // basic format for helper - style it using class: .ui-draggable-dragging + , helper: "clone" + , opacity: o.resizerDragOpacity + , addClasses: false // avoid ui-state-disabled class when disabled + //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed + , zIndex: z.resizer_drag + + , start: function (e, ui) { + // REFRESH options & state pointers in case we used swapPanes + o = options[pane]; + s = state[pane]; + // re-read options + live = o.livePaneResizing; + + // ondrag_start callback - will CANCEL hide if returns false + // TODO: dragging CANNOT be cancelled like this, so see if there is a way? + if (false === _runCallbacks("ondrag_start", pane)) return false; + + s.isResizing = true; // prevent pane from closing while resizing + timer.clear(pane+"_closeSlider"); // just in case already triggered + + // SET RESIZER LIMITS - used in drag() + setSizeLimits(pane); // update pane/resizer state + r = s.resizerPosition; + lastPos = ui.position[ side ] + + $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes + helperClassesSet = false; // reset logic var - see drag() + + // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver) + $('body').disableSelection(); + + // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS + showMasks( masks ); + } + + , drag: function (e, ui) { + if (!helperClassesSet) { // can only add classes after clone has been added to the DOM + //$(".ui-draggable-dragging") + ui.helper + .addClass( helperClass +" "+ helperPaneClass ) // add helper classes + .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue + .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar + ; + helperClassesSet = true; + // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane! + if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding); + } + // CONTAIN RESIZER-BAR TO RESIZING LIMITS + var limit = 0; + if (ui.position[side] < r.min) { + ui.position[side] = r.min; + limit = -1; + } + else if (ui.position[side] > r.max) { + ui.position[side] = r.max; + limit = 1; + } + // ADD/REMOVE dragging-limit CLASS + if (limit) { + ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit + window.defaultStatus = (limit>0 && pane.match(/(north|west)/)) || (limit<0 && pane.match(/(south|east)/)) ? o.tips.maxSizeWarning : o.tips.minSizeWarning; + } + else { + ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit + window.defaultStatus = ""; + } + // DYNAMICALLY RESIZE PANES IF OPTION ENABLED + // won't trigger unless resizer has actually moved! + if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) { + lastPos = ui.position[side]; + resizePanes(e, ui, pane) + } + } + + , stop: function (e, ui) { + $('body').enableSelection(); // RE-ENABLE TEXT SELECTION + window.defaultStatus = ""; // clear 'resizing limit' message from statusbar + $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer + s.isResizing = false; + resizePanes(e, ui, pane, true, masks); // true = resizingDone + } + + }); + }); + + /** + * resizePanes + * + * Sub-routine called from stop() - and drag() if livePaneResizing + * + * @param {!Object} evt + * @param {!Object} ui + * @param {string} pane + * @param {boolean=} [resizingDone=false] + */ + var resizePanes = function (evt, ui, pane, resizingDone, masks) { + var dragPos = ui.position + , c = _c[pane] + , o = options[pane] + , s = state[pane] + , resizerPos + ; + switch (pane) { + case "north": resizerPos = dragPos.top; break; + case "west": resizerPos = dragPos.left; break; + case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break; + case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break; + }; + // remove container margin from resizer position to get the pane size + var newSize = resizerPos - sC["inset"+ c.side]; + + // Disable OR Resize Mask(s) created in drag.start + if (!resizingDone) { + // ensure we meet liveResizingTolerance criteria + if (Math.abs(newSize - s.size) < o.liveResizingTolerance) + return; // SKIP resize this time + // resize the pane + manualSizePane(pane, newSize, false, true); // true = noAnimation + sizeMasks(); // resize all visible masks + } + else { // resizingDone + // ondrag_end callback + if (false !== _runCallbacks("ondrag_end", pane)) + manualSizePane(pane, newSize, false, true); // true = noAnimation + hideMasks(); // hide all masks, which include panes with 'content/iframe-masks' + if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane + showMasks( masks, true ); // true = onlyForObjects + } + }; + } + + /** + * sizeMask + * + * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane + * Called when mask created, and during livePaneResizing + */ +, sizeMask = function () { + var $M = $(this) + , pane = $M.data("layoutMask") // eg: "west" + , s = state[pane] + ; + // only masks over an IFRAME-pane need manual resizing + if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes + $M.css({ + top: s.offsetTop + , left: s.offsetLeft + , width: s.outerWidth + , height: s.outerHeight + }); + /* ALT Method... + var $P = $Ps[pane]; + $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight }); + */ + } +, sizeMasks = function () { + $Ms.each( sizeMask ); // resize all 'visible' masks + } + +, showMasks = function (panes, onlyForObjects) { + var a = panes ? panes.split(",") : $.layout.config.allPanes + , z = options.zIndexes + , o, s; + $.each(a, function(i,p){ + s = state[p]; + o = options[p]; + if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) { + getMasks(p).each(function(){ + sizeMask.call(this); + this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1 + this.style.display = "block"; + }); + } + }); + } + +, hideMasks = function () { + // ensure no pane is resizing - could be a timing issue + var skip; + $.each( $.layout.config.borderPanes, function(i,p){ + if (state[p].isResizing) { + skip = true; + return false; // BREAK + } + }); + if (!skip) + $Ms.hide(); // hide ALL masks + } + +, getMasks = function (pane) { + var $Masks = $([]) + , $M, i = 0, c = $Ms.length + ; + for (; i CSS + if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET CSS + $N.css( $N.data(css) ).removeData(css); + + // trigger plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onDestroy ); + + // trigger state-management and onunload callback + unload(); + + // clear the Instance of everything except for container & options (so could recreate) + // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options ); + for (n in Instance) + if (!n.match(/^(container|options)$/)) delete Instance[ n ]; + // add a 'destroyed' flag to make it easy to check + Instance.destroyed = true; + + // if this is a child layout, CLEAR the child-pointer in the parent + /* for now the pointer REMAINS, but with only container, options and destroyed keys + if (parentPane) { + var layout = parentPane.pane.data("parentLayout"); + parentPane.child = layout.children[ parentPane.name ] = null; + } + */ + + return Instance; // for coding convenience + } + + /** + * Remove a pane from the layout - subroutine of destroy() + * + * @see destroy() + * @param {string|Object} evt_or_pane The pane to process + * @param {boolean=} [remove=false] Remove the DOM element? + * @param {boolean=} [skipResize=false] Skip calling resizeAll()? + * @param {boolean=} [destroyChild=true] Destroy Child-layouts? If not passed, obeys options setting + */ +, removePane = function (evt_or_pane, remove, skipResize, destroyChild) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $C = $Cs[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + ; + // NOTE: elements can still exist even after remove() + // so check for missing data(), which is cleared by removed() + if ($P && $.isEmptyObject( $P.data() )) $P = false; + if ($C && $.isEmptyObject( $C.data() )) $C = false; + if ($R && $.isEmptyObject( $R.data() )) $R = false; + if ($T && $.isEmptyObject( $T.data() )) $T = false; + + if ($P) $P.stop(true, true); + + // check for a child layout + var o = options[pane] + , s = state[pane] + , d = "layout" + , css = "layoutCSS" + , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null + , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout + ; + + // FIRST destroy the child-layout(s) + if (destroy && child && !child.destroyed) { + child.destroy(true); // tell child-layout to destroy ALL its child-layouts too + if (child.destroyed) // destroy was successful + child = null; // clear pointer for logic below + } + + if ($P && remove && !child) + $P.remove(); + else if ($P && $P[0]) { + // create list of ALL pane-classes that need to be removed + var root = o.paneClass // default="ui-layout-pane" + , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west" + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes + pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes + ; + $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes + // remove all Layout classes from pane-element + $P .removeClass( classes.join(" ") ) // remove ALL pane-classes + .removeData("parentLayout") + .removeData("layoutPane") + .removeData("layoutRole") + .removeData("layoutEdge") + .removeData("autoHidden") // in case set + .unbind("."+ sID) // remove ALL Layout events + // TODO: remove these extra unbind commands when jQuery is fixed + //.unbind("mouseenter"+ sID) + //.unbind("mouseleave"+ sID) + ; + // do NOT reset CSS if this pane/content is STILL the container of a nested layout! + // the nested layout will reset its 'container' CSS when/if it is destroyed + if ($C && $C.data(d)) { + // a content-div may not have a specific width, so give it one to contain the Layout + $C.width( $C.width() ); + child.resizeAll(); // now resize the Layout + } + else if ($C) + $C.css( $C.data(css) ).removeData(css).removeData("layoutRole"); + // remove pane AFTER content in case there was a nested layout + if (!$P.data(d)) + $P.css( $P.data(css) ).removeData(css); + } + + // REMOVE pane resizer and toggler elements + if ($T) $T.remove(); + if ($R) $R.remove(); + + // CLEAR all pointers and state data + Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false; + s = { removed: true }; + + if (!skipResize) + resizeAll(); + } + + +/* + * ########################### + * ACTION METHODS + * ########################### + */ + +, _hidePane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , s = $P[0].style + ; + if (o.useOffscreenClose) { + if (!$P.data(_c.offscreenReset)) + $P.data(_c.offscreenReset, { left: s.left, right: s.right }); + $P.css( _c.offscreenCSS ); + } + else + $P.hide().removeData(_c.offscreenReset); + } + +, _showPane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , off = _c.offscreenCSS + , old = $P.data(_c.offscreenReset) + , s = $P[0].style + ; + $P .show() // ALWAYS show, just in case + .removeData(_c.offscreenReset); + if (o.useOffscreenClose && old) { + if (s.left == off.left) + s.left = old.left; + if (s.right == off.right) + s.right = old.right; + } + } + + + /** + * Completely 'hides' a pane, including its spacing - as if it does not exist + * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it + * + * @param {string|Object} evt_or_pane The pane being hidden, ie: north, south, east, or west + * @param {boolean=} [noAnimation=false] + */ +, hide = function (evt_or_pane, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || s.isHidden) return; // pane does not exist OR is already hidden + + // onhide_start callback - will CANCEL hide if returns false + if (state.initialized && false === _runCallbacks("onhide_start", pane)) return; + + s.isSliding = false; // just in case + + // now hide the elements + if ($R) $R.hide(); // hide resizer-bar + if (!state.initialized || s.isClosed) { + s.isClosed = true; // to trigger open-animation on show() + s.isHidden = true; + s.isVisible = false; + if (!state.initialized) + _hidePane(pane); // no animation when loading page + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center"); + if (state.initialized || o.triggerEventsOnLoad) + _runCallbacks("onhide_end", pane); + } + else { + s.isHiding = true; // used by onclose + close(pane, false, noAnimation); // adjust all panes to fit + } + } + + /** + * Show a hidden pane - show as 'closed' by default unless openPane = true + * + * @param {string|Object} evt_or_pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [openPane=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, show = function (evt_or_pane, openPane, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden + + // onshow_start callback - will CANCEL show if returns false + if (false === _runCallbacks("onshow_start", pane)) return; + + s.isSliding = false; // just in case + s.isShowing = true; // used by onopen/onclose + //s.isHidden = false; - will be set by open/close - if not cancelled + + // now show the elements + //if ($R) $R.show(); - will be shown by open/close + if (openPane === false) + close(pane, true); // true = force + else + open(pane, false, noAnimation, noAlert); // adjust all panes to fit + } + + + /** + * Toggles a pane open/closed by calling either open or close + * + * @param {string|Object} evt_or_pane The pane being toggled, ie: north, south, east, or west + * @param {boolean=} [slide=false] + */ +, toggle = function (evt_or_pane, slide) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + ; + if (evt) // called from to $R.dblclick OR triggerPaneEvent + evt.stopImmediatePropagation(); + if (s.isHidden) + show(pane); // will call 'open' after unhiding it + else if (s.isClosed) + open(pane, !!slide); + else + close(pane); + } + + + /** + * Utility method used during init or other auto-processes + * + * @param {string} pane The pane being closed + * @param {boolean=} [setHandles=false] + */ +, _closePane = function (pane, setHandles) { + var + $P = $Ps[pane] + , s = state[pane] + ; + _hidePane(pane); + s.isClosed = true; + s.isVisible = false; + // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force + } + + /** + * Close the specified pane (animation optional), and resize all other panes as needed + * + * @param {string|Object} evt_or_pane The pane being closed, ie: north, south, east, or west + * @param {boolean=} [force=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [skipCallback=false] + */ +, close = function (evt_or_pane, force, noAnimation, skipCallback) { + var pane = evtPane.call(this, evt_or_pane); + // if pane has been initialized, but NOT the complete layout, close pane instantly + if (!state.initialized && $Ps[pane]) { + _closePane(pane); // INIT pane as closed + return; + } + if (!isInitialized()) return; + + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing, isHiding, wasSliding; + + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ??? + || (!force && s.isClosed && !s.isShowing) // already closed + ) return queueNext(); + + // onclose_start callback - will CANCEL hide if returns false + // SKIP if just 'showing' a hidden pane as 'closed' + var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane); + + // transfer logic vars to temp vars + isShowing = s.isShowing; + isHiding = s.isHiding; + wasSliding = s.isSliding; + // now clear the logic vars (REQUIRED before aborting) + delete s.isShowing; + delete s.isHiding; + + if (abort) return queueNext(); + + doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none"); + s.isMoving = true; + s.isClosed = true; + s.isVisible = false; + // update isHidden BEFORE sizing panes + if (isHiding) s.isHidden = true; + else if (isShowing) s.isHidden = false; + + if (s.isSliding) // pane is being closed, so UNBIND trigger events + bindStopSlidingEvents(pane, false); // will set isSliding=false + else // resize panes adjacent to this one + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback + + // if this pane has a resizer bar, move it NOW - before animation + setAsClosed(pane); + + // CLOSE THE PANE + if (doFX) { // animate the close + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () { + lockPaneForFX(pane, false); // undo + if (s.isClosed) close_2(); + queueNext(); + }); + } + else { // hide the pane without animation + _hidePane(pane); + close_2(); + queueNext(); + }; + }); + + // SUBROUTINE + function close_2 () { + s.isMoving = false; + bindStartSlidingEvent(pane, true); // will enable if o.slidable = true + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane ); + } + + // hide any masks shown while closing + hideMasks(); + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) { + // onclose callback - UNLESS just 'showing' a hidden pane as 'closed' + if (!isShowing) _runCallbacks("onclose_end", pane); + // onhide OR onshow callback + if (isShowing) _runCallbacks("onshow_end", pane); + if (isHiding) _runCallbacks("onhide_end", pane); + } + } + } + + /** + * @param {string} pane The pane just closed, ie: north, south, east, or west + */ +, setAsClosed = function (pane) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + ; + $R + .css(side, sC[inset]) // move the resizer + .removeClass( rClass+_open +" "+ rClass+_pane+_open ) + .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + .addClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .unbind("dblclick."+ sID) + ; + // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent? + if (o.resizable && $.layout.plugins.draggable) + $R + .draggable("disable") + .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here + .css("cursor", "default") + .attr("title","") + ; + + // if pane has a toggler button, adjust that too + if ($T) { + $T + .removeClass( tClass+_open +" "+ tClass+_pane+_open ) + .addClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .attr("title", o.tips.Open) // may be blank + ; + // toggler-content - if exists + $T.children(".content-open").hide(); + $T.children(".content-closed").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, false); + + if (state.initialized) { + // resize 'length' and position togglers for adjacent panes + sizeHandles(); + } + } + + /** + * Open the specified pane (animation optional), and resize all other panes as needed + * + * @param {string|Object} evt_or_pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [slide=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, open = function (evt_or_pane, slide, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.resizable && !o.closable && !s.isShowing) // invalid request + || (s.isVisible && !s.isSliding) // already open + ) return queueNext(); + + // pane can ALSO be unhidden by just calling show(), so handle this scenario + if (s.isHidden && !s.isShowing) { + queueNext(); // call before show() because it needs the queue free + show(pane, true); + return; + } + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else + // make sure there is enough space available to open the pane + setSizeLimits(pane, slide); + + // onopen_start callback - will CANCEL open if returns false + var cbReturn = _runCallbacks("onopen_start", pane); + + if (cbReturn === "abort") + return queueNext(); + + // update pane-state again in case options were changed in onopen_start + if (cbReturn !== "NC") // NC = "No Callback" + setSizeLimits(pane, slide); + + if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN! + syncPinBtns(pane, false); // make sure pin-buttons are reset + if (!noAlert && o.tips.noRoomToOpen) + alert(o.tips.noRoomToOpen); + return queueNext(); // ABORT + } + + if (slide) // START Sliding - will set isSliding=true + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead + bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false + else if (o.slidable) + bindStartSlidingEvent(pane, false); // UNBIND trigger events + + s.noRoom = false; // will be reset by makePaneFit if 'noRoom' + makePaneFit(pane); + + // transfer logic var to temp var + isShowing = s.isShowing; + // now clear the logic var + delete s.isShowing; + + doFX = !noAnimation && s.isClosed && (o.fxName_open != "none"); + s.isMoving = true; + s.isVisible = true; + s.isClosed = false; + // update isHidden BEFORE sizing panes - WHY??? Old? + if (isShowing) s.isHidden = false; + + if (doFX) { // ANIMATE + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + if (s.isSliding) masks += ","+ _c.oppositeEdge[pane]; + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() { + lockPaneForFX(pane, false); // undo + if (s.isVisible) open_2(); // continue + queueNext(); + }); + } + else { // no animation + _showPane(pane);// just show pane and... + open_2(); // continue + queueNext(); + }; + }); + + // SUBROUTINE + function open_2 () { + s.isMoving = false; + + // cure iframe display issues + _fixIframe(pane); + + // NOTE: if isSliding, then other panes are NOT 'resized' + if (!s.isSliding) { // resize all panes adjacent to this one + hideMasks(); // remove any masks shown while opening + sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback + } + + // set classes, position handles and execute callbacks... + setAsOpen(pane); + }; + + } + + /** + * @param {string} pane The pane just opened, ie: north, south, east, or west + * @param {boolean=} [skipCallback=false] + */ +, setAsOpen = function (pane, skipCallback) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _closed = "-closed" + , _sliding= "-sliding" + ; + $R + .css(side, sC[inset] + getPaneSize(pane)) // move the resizer + .removeClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .addClass( rClass+_open +" "+ rClass+_pane+_open ) + ; + if (s.isSliding) + $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + else // in case 'was sliding' + $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + + if (o.resizerDblClickToggle) + $R.bind("dblclick", toggle ); + removeHover( 0, $R ); // remove hover classes + if (o.resizable && $.layout.plugins.draggable) + $R .draggable("enable") + .css("cursor", o.resizerCursor) + .attr("title", o.tips.Resize); + else if (!s.isSliding) + $R.css("cursor", "default"); // n-resize, s-resize, etc + + // if pane also has a toggler button, adjust that too + if ($T) { + $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .addClass( tClass+_open +" "+ tClass+_pane+_open ) + .attr("title", o.tips.Close); // may be blank + removeHover( 0, $T ); // remove hover classes + // toggler-content - if exists + $T.children(".content-closed").hide(); + $T.children(".content-open").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, !s.isSliding); + + // update pane-state dimensions - BEFORE resizing content + $.extend(s, elDims($P)); + + if (state.initialized) { + // resize resizer & toggler sizes for all panes + sizeHandles(); + // resize content every time pane opens - to be sure + sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving' + } + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) { + // onopen callback + _runCallbacks("onopen_end", pane); + // onshow callback - TODO: should this be here? + if (s.isShowing) _runCallbacks("onshow_end", pane); + + // ALSO call onresize because layout-size *may* have changed while pane was closed + if (state.initialized) + _runCallbacks("onresize_end", pane); + } + + // TODO: Somehow sizePane("north") is being called after this point??? + } + + + /** + * slideOpen / slideClose / slideToggle + * + * Pass-though methods for sliding + */ +, slideOpen = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + , delay = options[pane].slideDelay_open + ; + // prevent event from triggering on NEW resizer binding created below + if (evt) evt.stopImmediatePropagation(); + + if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0) + // trigger = mouseenter - use a delay + timer.set(pane+"_openSlider", open_NOW, delay); + else + open_NOW(); // will unbind events if is already open + + /** + * SUBROUTINE for timed open + */ + function open_NOW () { + if (!s.isClosed) // skip if no longer closed! + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (!s.isMoving) + open(pane, true); // true = slide - open() will handle binding + }; + } + +, slideClose = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override + ; + if (s.isClosed || s.isResizing) + return; // skip if already closed OR in process of resizing + else if (o.slideTrigger_close === "click") + close_NOW(); // close immediately onClick + else if (o.preventQuickSlideClose && s.isMoving) + return; // handle Chrome quick-close on slide-open + else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane])) + return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + else if (evt) // trigger = mouseleave - use a delay + // 1 sec delay if 'opening', else .3 sec + timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay)); + else // called programically + close_NOW(); + + /** + * SUBROUTINE for timed close + */ + function close_NOW () { + if (s.isClosed) // skip 'close' if already closed! + bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here? + else if (!s.isMoving) + close(pane); // close will handle unbinding + }; + } + + /** + * @param {string|Object} evt_or_pane The pane being opened, ie: north, south, east, or west + */ +, slideToggle = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + toggle(pane, true); + } + + + /** + * Must set left/top on East/South panes so animation will work properly + * + * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored! + * @param {boolean} doLock true = set left/top, false = remove + */ +, lockPaneForFX = function (pane, doLock) { + var $P = $Ps[pane] + , s = state[pane] + , o = options[pane] + , z = options.zIndexes + ; + if (doLock) { + $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation + if (pane=="south") + $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() }); + else if (pane=="east") + $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() }); + } + else { // animation DONE - RESET CSS + // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + if (pane=="south") + $P.css({ top: "auto" }); + // if pane is positioned 'off-screen', then DO NOT screw with it! + else if (pane=="east" && !$P.css("left").match(/\-99999/)) + $P.css({ left: "auto" }); + // fix anti-aliasing in IE - only needed for animations that change opacity + if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1) + $P[0].style.removeAttribute('filter'); + } + } + + + /** + * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger + * + * @see open(), close() + * @param {string} pane The pane to enable/disable, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable sliding? + */ +, bindStartSlidingEvent = function (pane, enable) { + var o = options[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , evtName = o.slideTrigger_open.toLowerCase() + ; + if (!$R || (enable && !o.slidable)) return; + + // make sure we have a valid event + if (evtName.match(/mouseover/)) + evtName = o.slideTrigger_open = "mouseenter"; + else if (!evtName.match(/(click|dblclick|mouseenter)/)) + evtName = o.slideTrigger_open = "click"; + + $R + // add or remove event + [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen) + // set the appropriate cursor & title/tip + .css("cursor", enable ? o.sliderCursor : "default") + .attr("title", enable ? o.tips.Slide : "") + ; + } + + /** + * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed + * Also increases zIndex when pane is sliding open + * See bindStartSlidingEvent for code to control 'slide open' + * + * @see slideOpen(), slideClose() + * @param {string} pane The pane to process, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable events? + */ +, bindStopSlidingEvents = function (pane, enable) { + var o = options[pane] + , s = state[pane] + , c = _c[pane] + , z = options.zIndexes + , evtName = o.slideTrigger_close.toLowerCase() + , action = (enable ? "bind" : "unbind") + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + s.isSliding = enable; // logic + timer.clear(pane+"_closeSlider"); // just in case + + // remove 'slideOpen' event from resizer + // ALSO will raise the zIndex of the pane & resizer + if (enable) bindStartSlidingEvent(pane, false); + + // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not + $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal); + $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1 + + // make sure we have a valid event + if (!evtName.match(/(click|mouseleave)/)) + evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout' + + // add/remove slide triggers + $R[action](evtName, slideClose); // base event on resize + // need extra events for mouseleave + if (evtName === "mouseleave") { + // also close on pane.mouseleave + $P[action]("mouseleave."+ sID, slideClose); + // cancel timer when mouse moves between 'pane' and 'resizer' + $R[action]("mouseenter."+ sID, cancelMouseOut); + $P[action]("mouseenter."+ sID, cancelMouseOut); + } + + if (!enable) + timer.clear(pane+"_closeSlider"); + else if (evtName === "click" && !o.resizable) { + // IF pane is not resizable (which already has a cursor and tip) + // then set the a cursor & title/tip on resizer when sliding + $R.css("cursor", enable ? o.sliderCursor : "default"); + $R.attr("title", enable ? o.tips.Close : ""); // use Toggler-tip, eg: "Close Pane" + } + + // SUBROUTINE for mouseleave timer clearing + function cancelMouseOut (evt) { + timer.clear(pane+"_closeSlider"); + evt.stopPropagation(); + } + } + + + /** + * Hides/closes a pane if there is insufficient room - reverses this when there is room again + * MUST have already called setSizeLimits() before calling this method + * + * @param {string} pane The pane being resized + * @param {boolean=} [isOpening=false] Called from onOpen? + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, makePaneFit = function (pane, isOpening, skipCallback, force) { + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isSidePane = c.dir==="vert" + , hasRoom = false + ; + // special handling for center & east/west panes + if (pane === "center" || (isSidePane && s.noVerticalRoom)) { + // see if there is enough room to display the pane + // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth); + hasRoom = (s.maxHeight >= 0); + if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now + _showPane(pane); + if ($R) $R.show(); + s.isVisible = true; + s.noRoom = false; + if (isSidePane) s.noVerticalRoom = false; + _fixIframe(pane); + } + else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now + _hidePane(pane); + if ($R) $R.hide(); + s.isVisible = false; + s.noRoom = true; + } + } + + // see if there is enough room to fit the border-pane + if (pane === "center") { + // ignore center in this block + } + else if (s.minSize <= s.maxSize) { // pane CAN fit + hasRoom = true; + if (s.size > s.maxSize) // pane is too big - shrink it + sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation + else if (s.size < s.minSize) // pane is too small - enlarge it + sizePane(pane, s.minSize, skipCallback, force, true); + // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen + else if ($R && s.isVisible && $P.is(":visible")) { + // make sure resizer-bar is positioned correctly + // handles situation where nested layout was 'hidden' when initialized + var side = c.side.toLowerCase() + , pos = s.size + sC["inset"+ c.side] + ; + if ($.layout.cssNum($R, side) != pos) $R.css( side, pos ); + } + + // if was previously hidden due to noRoom, then RESET because NOW there is room + if (s.noRoom) { + // s.noRoom state will be set by open or show + if (s.wasOpen && o.closable) { + if (o.autoReopen) + open(pane, false, true, true); // true = noAnimation, true = noAlert + else // leave the pane closed, so just update state + s.noRoom = false; + } + else + show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert + } + } + else { // !hasRoom - pane CANNOT fit + if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now... + s.noRoom = true; // update state + s.wasOpen = !s.isClosed && !s.isSliding; + if (s.isClosed){} // SKIP + else if (o.closable) // 'close' if possible + close(pane, true, true); // true = force, true = noAnimation + else // 'hide' pane if cannot just be closed + hide(pane, true); // true = noAnimation + } + } + } + + + /** + * sizePane / manualSizePane + * sizePane is called only by internal methods whenever a pane needs to be resized + * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized' + * + * @param {string|Object} evt_or_pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [noAnimation=false] + */ +, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete... + , forceResize = o.livePaneResizing && !s.isResizing + ; + // ANY call to manualSizePane disables autoResize - ie, percentage sizing + o.autoResize = false; + // flow-through... + sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled + } + + /** + * @param {string|Object} evt_or_pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] Force resizing even if does not seem necessary + * @param {boolean=} [noAnimation=false] + */ +, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event? + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , side = _c[pane].side.toLowerCase() + , dimName = _c[pane].sizeType.toLowerCase() + , inset = "inset"+ _c[pane].side + , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize + , doFX = noAnimation !== true && o.animatePaneSizing + , oldSize, newSize + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + // calculate 'current' min/max sizes + setSizeLimits(pane); // update pane-state + oldSize = s.size; + size = _parseSize(pane, size); // handle percentages & auto + size = max(size, _parseSize(pane, o.minSize)); + size = min(size, s.maxSize); + if (size < s.minSize) { // not enough room for pane! + queueNext(); // call before makePaneFit() because it needs the queue free + makePaneFit(pane, false, skipCallback); // will hide or close pane + return; + } + + // IF newSize is same as oldSize, then nothing to do - abort + if (!force && size === oldSize) + return queueNext(); + + // onresize_start callback CANNOT cancel resizing because this would break the layout! + if (!skipCallback && state.initialized && s.isVisible) + _runCallbacks("onresize_start", pane); + + // resize the pane, and make sure its visible + newSize = cssSize(pane, size); + + if (doFX && $P.is(":visible")) { // ANIMATE + var fx = $.layout.effects.size[pane] || $.layout.effects.size.all + , easing = o.fxSettings_size.easing || fx.easing + , z = options.zIndexes + , props = {}; + props[ dimName ] = newSize +'px'; + s.isMoving = true; + // overlay all elements during animation + $P.css({ zIndex: z.pane_animate }) + .show().animate( props, o.fxSpeed_size, easing, function(){ + // reset zIndex after animation + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + s.isMoving = false; + sizePane_2(); // continue + queueNext(); + }); + } + else { // no animation + $P.css( dimName, newSize ); // resize pane + // if pane is visible, then + if ($P.is(":visible")) + sizePane_2(); // continue + else { + // pane is NOT VISIBLE, so just update state data... + // when pane is *next opened*, it will have the new size + s.size = size; // update state.size + $.extend(s, elDims($P)); // update state dimensions + } + queueNext(); + }; + + }); + + // SUBROUTINE + function sizePane_2 () { + /* Panes are sometimes not sized precisely in some browsers!? + * This code will resize the pane up to 3 times to nudge the pane to the correct size + */ + var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight() + , tries = [{ + pane: pane + , count: 1 + , target: size + , actual: actual + , correct: (size === actual) + , attempt: size + , cssSize: newSize + }] + , lastTry = tries[0] + , thisTry = {} + , msg = 'Inaccurate size after resizing the '+ pane +'-pane.' + ; + while ( !lastTry.correct ) { + thisTry = { pane: pane, count: lastTry.count+1, target: size }; + + if (lastTry.actual > size) + thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size)); + else // lastTry.actual < size + thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual)); + + thisTry.cssSize = cssSize(pane, thisTry.attempt); + $P.css( dimName, thisTry.cssSize ); + + thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight(); + thisTry.correct = (size === thisTry.actual); + + // log attempts and alert the user of this *non-fatal error* (if showDebugMessages) + if ( tries.length === 1) { + _log(msg, false, true); + _log(lastTry, false, true); + } + _log(thisTry, false, true); + // after 4 tries, is as close as its gonna get! + if (tries.length > 3) break; + + tries.push( thisTry ); + lastTry = tries[ tries.length - 1 ]; + } + // END TESTING CODE + + // update pane-state dimensions + s.size = size; + $.extend(s, elDims($P)); + + if (s.isVisible && $P.is(":visible")) { + // reposition the resizer-bar + if ($R) $R.css( side, size + sC[inset] ); + // resize the content-div + sizeContent(pane); + } + + if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible) + _runCallbacks("onresize_end", pane); + + // resize all the adjacent panes, and adjust their toggler buttons + // when skipCallback passed, it means the controlling method will handle 'other panes' + if (!skipCallback) { + // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize + if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force); + sizeHandles(); + } + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (size < oldSize && state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane, false, skipCallback ); + } + + // DEBUG - ALERT user/developer so they know there was a sizing problem + if (tries.length > 1) + _log(msg +'\nSee the Error Console for details.', true, true); + } + } + + /** + * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide() + * @param {Array.|string} panes The pane(s) being resized, comma-delmited string + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, sizeMidPanes = function (panes, skipCallback, force) { + panes = (panes ? panes : "east,west,center").split(","); + + $.each(panes, function (i, pane) { + if (!$Ps[pane]) return; // NO PANE - skip + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isCenter= (pane=="center") + , hasRoom = true + , CSS = {} + , newCenter = calcNewCenterPaneDims() + ; + // update pane-state dimensions + $.extend(s, elDims($P)); + + if (pane === "center") { + if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // set state for makePaneFit() logic + $.extend(s, cssMinDims(pane), { + maxWidth: newCenter.width + , maxHeight: newCenter.height + }); + CSS = newCenter; + // convert OUTER width/height to CSS width/height + CSS.width = cssW($P, CSS.width); + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, CSS.height); + hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW + // during layout init, try to shrink east/west panes to make room for center + if (!state.initialized && o.minWidth > s.outerWidth) { + var + reqPx = o.minWidth - s.outerWidth + , minE = options.east.minSize || 0 + , minW = options.west.minSize || 0 + , sizeE = state.east.size + , sizeW = state.west.size + , newE = sizeE + , newW = sizeW + ; + if (reqPx > 0 && state.east.isVisible && sizeE > minE) { + newE = max( sizeE-minE, sizeE-reqPx ); + reqPx -= sizeE-newE; + } + if (reqPx > 0 && state.west.isVisible && sizeW > minW) { + newW = max( sizeW-minW, sizeW-reqPx ); + reqPx -= sizeW-newW; + } + // IF we found enough extra space, then resize the border panes as calculated + if (reqPx === 0) { + if (sizeE && sizeE != minE) + sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done + if (sizeW && sizeW != minW) + sizePane('west', newW, true, force, true); + // now start over! + sizeMidPanes('center', skipCallback, force); + return; // abort this loop + } + } + } + else { // for east and west, set only the height, which is same as center height + // set state.min/maxWidth/Height for makePaneFit() logic + if (s.isVisible && !s.noVerticalRoom) + $.extend(s, elDims($P), cssMinDims(pane)) + if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // east/west have same top, bottom & height as center + CSS.top = newCenter.top; + CSS.bottom = newCenter.bottom; + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, newCenter.height); + s.maxHeight = CSS.height; + hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW + if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic + } + + if (hasRoom) { + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_start", pane); + + $P.css(CSS); // apply the CSS to pane + if (pane !== "center") + sizeHandles(pane); // also update resizer length + if (s.noRoom && !s.isClosed && !s.isHidden) + makePaneFit(pane); // will re-open/show auto-closed/hidden pane + if (s.isVisible) { + $.extend(s, elDims($P)); // update pane dimensions + if (state.initialized) sizeContent(pane); // also resize the contents, if exists + } + } + else if (!s.noRoom && s.isVisible) // no room for pane + makePaneFit(pane); // will hide or close pane + + if (!s.isVisible) + return true; // DONE - next pane + + /* + * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes + * Normally these panes have only 'left' & 'right' positions so pane auto-sizes + * ALSO required when pane is an IFRAME because will NOT default to 'full width' + * TODO: Can I use width:100% for a north/south iframe? + * TODO: Sounds like a job for $P.outerWidth( sC.innerWidth ) SETTER METHOD + */ + if (pane === "center") { // finished processing midPanes + var fix = browser.isIE6 || !browser.boxModel; + if ($Ps.north && (fix || state.north.tagName=="IFRAME")) + $Ps.north.css("width", cssW($Ps.north, sC.innerWidth)); + if ($Ps.south && (fix || state.south.tagName=="IFRAME")) + $Ps.south.css("width", cssW($Ps.south, sC.innerWidth)); + } + + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_end", pane); + }); + } + + + /** + * @see window.onresize(), callbacks or custom code + */ +, resizeAll = function (evt) { + // stopPropagation if called by trigger("layoutdestroy") - use evtPane utility + evtPane(evt); + + if (!state.initialized) { + _initLayoutElements(); + return; // no need to resize since we just initialized! + } + var oldW = sC.innerWidth + , oldH = sC.innerHeight + ; + // cannot size layout when 'container' is hidden or collapsed + if (!$N.is(":visible") ) return; + $.extend(state.container, elDims( $N )); // UPDATE container dimensions + if (!sC.outerHeight) return; + + // onresizeall_start will CANCEL resizing if returns false + // state.container has already been set, so user can access this info for calcuations + if (false === _runCallbacks("onresizeall_start")) return false; + + var // see if container is now 'smaller' than before + shrunkH = (sC.innerHeight < oldH) + , shrunkW = (sC.innerWidth < oldW) + , $P, o, s, dir + ; + // NOTE special order for sizing: S-N-E-W + $.each(["south","north","east","west"], function (i, pane) { + if (!$Ps[pane]) return; // no pane - SKIP + s = state[pane]; + o = options[pane]; + dir = _c[pane].dir; + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else { + setSizeLimits(pane); + makePaneFit(pane, false, true, true); // true=skipCallback/forceResize + } + }); + + sizeMidPanes("", true, true); // true=skipCallback, true=forceResize + sizeHandles(); // reposition the toggler elements + + // trigger all individual pane callbacks AFTER layout has finished resizing + o = options; // reuse alias + $.each(_c.allPanes, function (i, pane) { + $P = $Ps[pane]; + if (!$P) return; // SKIP + if (state[pane].isVisible) // undefined for non-existent panes + _runCallbacks("onresize_end", pane); // callback - if exists + }); + + _runCallbacks("onresizeall_end"); + //_triggerLayoutEvent(pane, 'resizeall'); + } + + /** + * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll + * + * @param {string|Object} evt_or_pane The pane just resized or opened + */ +, resizeChildLayout = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + if (!options[pane].resizeChildLayout) return; + var $P = $Ps[pane] + , $C = $Cs[pane] + , d = "layout" + , P = Instance[pane] + , L = children[pane] + ; + // user may have manually set EITHER instance pointer, so handle that + if (P.child && !L) { + // have to reverse the pointers! + var el = P.child.container; + L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance + } + + // if a layout-pointer exists, see if child has been destroyed + if (L && L.destroyed) + L = children[pane] = null; // clear child pointers + // no child layout pointer is set - see if there is a child layout NOW + if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers + + // ALWAYS refresh the pane.child alias + P.child = children[pane]; + + if (L) L.resizeAll(); + } + + + /** + * IF pane has a content-div, then resize all elements inside pane to fit pane-height + * + * @param {string|Object} evt_or_panes The pane(s) being resized + * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured? + */ +, sizeContent = function (evt_or_panes, remeasure) { + if (!isInitialized()) return; + + var panes = evtPane.call(this, evt_or_panes); + panes = panes ? panes.split(",") : _c.allPanes; + + $.each(panes, function (idx, pane) { + var + $P = $Ps[pane] + , $C = $Cs[pane] + , o = options[pane] + , s = state[pane] + , m = s.content // m = measurements + ; + if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip + + // if content-element was REMOVED, update OR remove the pointer + if (!$C.length) { + initContent(pane, false); // false = do NOT sizeContent() - already there! + if (!$C) return; // no replacement element found - pointer have been removed + } + + // onsizecontent_start will CANCEL resizing if returns false + if (false === _runCallbacks("onsizecontent_start", pane)) return; + + // skip re-measuring offsets if live-resizing + if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) { + _measure(); + // if any footers are below pane-bottom, they may not measure correctly, + // so allow pane overflow and re-measure + if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") { + $P.css("overflow", "visible"); + _measure(); // remeasure while overflowing + $P.css("overflow", "hidden"); + } + } + // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders + var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom); + + if (!$C.is(":visible") || m.height != newH) { + // size the Content element to fit new pane-size - will autoHide if not enough room + setOuterHeight($C, newH, true); // true=autoHide + m.height = newH; // save new height + }; + + if (state.initialized) + _runCallbacks("onsizecontent_end", pane); + + function _below ($E) { + return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0)); + }; + + function _measure () { + var + ignore = options[pane].contentIgnoreSelector + , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL + , $Fs_vis = $Fs.filter(':visible') + , $F = $Fs_vis.filter(':last') + ; + m = { + top: $C[0].offsetTop + , height: $C.outerHeight() + , numFooters: $Fs.length + , hiddenFooters: $Fs.length - $Fs_vis.length + , spaceBelow: 0 // correct if no content footer ($E) + } + m.spaceAbove = m.top; // just for state - not used in calc + m.bottom = m.top + m.height; + if ($F.length) + //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom) + m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F); + else // no footer - check marginBottom on Content element itself + m.spaceBelow = _below($C); + }; + }); + } + + + /** + * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary + * + * @see initHandles(), open(), close(), resizeAll() + * @param {string|Object} evt_or_panes The pane(s) being resized + */ +, sizeHandles = function (evt_or_panes) { + var panes = evtPane.call(this, evt_or_panes) + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (i, pane) { + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , $TC + ; + if (!$P || !$R) return; + + var + dir = _c[pane].dir + , _state = (s.isClosed ? "_closed" : "_open") + , spacing = o["spacing"+ _state] + , togAlign = o["togglerAlign"+ _state] + , togLen = o["togglerLength"+ _state] + , paneLen + , left + , offset + , CSS = {} + ; + + if (spacing === 0) { + $R.hide(); + return; + } + else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason + $R.show(); // in case was previously hidden + + // Resizer Bar is ALWAYS same width/height of pane it is attached to + if (dir === "horz") { // north/south + //paneLen = $P.outerWidth(); // s.outerWidth || + paneLen = sC.innerWidth; // handle offscreen-panes + s.resizerLength = paneLen; + left = $.layout.cssNum($P, "left") + $R.css({ + width: cssW($R, paneLen) // account for borders & padding + , height: cssH($R, spacing) // ditto + , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes + }); + } + else { // east/west + paneLen = $P.outerHeight(); // s.outerHeight || + s.resizerLength = paneLen; + $R.css({ + height: cssH($R, paneLen) // account for borders & padding + , width: cssW($R, spacing) // ditto + , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane? + //, top: $.layout.cssNum($Ps["center"], "top") + }); + } + + // remove hover classes + removeHover( o, $R ); + + if ($T) { + if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) { + $T.hide(); // always HIDE the toggler when 'sliding' + return; + } + else + $T.show(); // in case was previously hidden + + if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) { + togLen = paneLen; + offset = 0; + } + else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed + if (isStr(togAlign)) { + switch (togAlign) { + case "top": + case "left": offset = 0; + break; + case "bottom": + case "right": offset = paneLen - togLen; + break; + case "middle": + case "center": + default: offset = round((paneLen - togLen) / 2); // 'default' catches typos + } + } + else { // togAlign = number + var x = parseInt(togAlign, 10); // + if (togAlign >= 0) offset = x; + else offset = paneLen - togLen + x; // NOTE: x is negative! + } + } + + if (dir === "horz") { // north/south + var width = cssW($T, togLen); + $T.css({ + width: width // account for borders & padding + , height: cssH($T, spacing) // ditto + , left: offset // TODO: VERIFY that toggler positions correctly for ALL values + , top: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative + }); + } + else { // east/west + var height = cssH($T, togLen); + $T.css({ + height: height // account for borders & padding + , width: cssW($T, spacing) // ditto + , top: offset // POSITION the toggler + , left: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative + }); + } + + // remove ALL hover classes + removeHover( 0, $T ); + } + + // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now + if (!state.initialized && (o.initHidden || s.noRoom)) { + $R.hide(); + if ($T) $T.hide(); + } + }); + } + + + /** + * @param {string|Object} evt_or_pane + */ +, enableClosable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + , o = options[pane] + ; + if (!$T) return; + o.closable = true; + $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); }) + .css("visibility", "visible") + .css("cursor", "pointer") + .attr("title", state[pane].isClosed ? o.tips.Open : o.tips.Close) // may be blank + .show(); + } + /** + * @param {string|Object} evt_or_pane + * @param {boolean=} [hide=false] + */ +, disableClosable = function (evt_or_pane, hide) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + ; + if (!$T) return; + options[pane].closable = false; + // is closable is disable, then pane MUST be open! + if (state[pane].isClosed) open(pane, false, true); + $T .unbind("."+ sID) + .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues + .css("cursor", "default") + .attr("title", ""); + } + + + /** + * @param {string|Object} evt_or_pane + */ +, enableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].slidable = true; + if (state[pane].isClosed) + bindStartSlidingEvent(pane, true); + } + /** + * @param {string|Object} evt_or_pane + */ +, disableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R) return; + options[pane].slidable = false; + if (state[pane].isSliding) + close(pane, false, true); + else { + bindStartSlidingEvent(pane, false); + $R .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + } + + + /** + * @param {string|Object} evt_or_pane + */ +, enableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + , o = options[pane] + ; + if (!$R || !$R.data('draggable')) return; + o.resizable = true; + $R.draggable("enable"); + if (!state[pane].isClosed) + $R .css("cursor", o.resizerCursor) + .attr("title", o.tips.Resize); + } + /** + * @param {string|Object} evt_or_pane + */ +, disableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].resizable = false; + $R .draggable("disable") + .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + + + /** + * Move a pane from source-side (eg, west) to target-side (eg, east) + * If pane exists on target-side, move that to source-side, ie, 'swap' the panes + * + * @param {string|Object} evt_or_pane1 The pane/edge being swapped + * @param {string} pane2 ditto + */ +, swapPanes = function (evt_or_pane1, pane2) { + if (!isInitialized()) return; + var pane1 = evtPane.call(this, evt_or_pane1); + // change state.edge NOW so callbacks can know where pane is headed... + state[pane1].edge = pane2; + state[pane2].edge = pane1; + // run these even if NOT state.initialized + if (false === _runCallbacks("onswap_start", pane1) + || false === _runCallbacks("onswap_start", pane2) + ) { + state[pane1].edge = pane1; // reset + state[pane2].edge = pane2; + return; + } + + var + oPane1 = copy( pane1 ) + , oPane2 = copy( pane2 ) + , sizes = {} + ; + sizes[pane1] = oPane1 ? oPane1.state.size : 0; + sizes[pane2] = oPane2 ? oPane2.state.size : 0; + + // clear pointers & state + $Ps[pane1] = false; + $Ps[pane2] = false; + state[pane1] = {}; + state[pane2] = {}; + + // ALWAYS remove the resizer & toggler elements + if ($Ts[pane1]) $Ts[pane1].remove(); + if ($Ts[pane2]) $Ts[pane2].remove(); + if ($Rs[pane1]) $Rs[pane1].remove(); + if ($Rs[pane2]) $Rs[pane2].remove(); + $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false; + + // transfer element pointers and data to NEW Layout keys + move( oPane1, pane2 ); + move( oPane2, pane1 ); + + // cleanup objects + oPane1 = oPane2 = sizes = null; + + // make panes 'visible' again + if ($Ps[pane1]) $Ps[pane1].css(_c.visible); + if ($Ps[pane2]) $Ps[pane2].css(_c.visible); + + // fix any size discrepancies caused by swap + resizeAll(); + + // run these even if NOT state.initialized + _runCallbacks("onswap_end", pane1); + _runCallbacks("onswap_end", pane2); + + return; + + function copy (n) { // n = pane + var + $P = $Ps[n] + , $C = $Cs[n] + ; + return !$P ? false : { + pane: n + , P: $P ? $P[0] : false + , C: $C ? $C[0] : false + , state: $.extend(true, {}, state[n]) + , options: $.extend(true, {}, options[n]) + } + }; + + function move (oPane, pane) { + if (!oPane) return; + var + P = oPane.P + , C = oPane.C + , oldPane = oPane.pane + , c = _c[pane] + , side = c.side.toLowerCase() + , inset = "inset"+ c.side + // save pane-options that should be retained + , s = $.extend(true, {}, state[pane]) + , o = options[pane] + // RETAIN side-specific FX Settings - more below + , fx = { resizerCursor: o.resizerCursor } + , re, size, pos + ; + $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) { + fx[k +"_open"] = o[k +"_open"]; + fx[k +"_close"] = o[k +"_close"]; + fx[k +"_size"] = o[k +"_size"]; + }); + + // update object pointers and attributes + $Ps[pane] = $(P) + .data({ + layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + }) + .css(_c.hidden) + .css(c.cssReq) + ; + $Cs[pane] = C ? $(C) : false; + + // set options and state + options[pane] = $.extend(true, {}, oPane.options, fx); + state[pane] = $.extend(true, {}, oPane.state); + + // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west + re = new RegExp(o.paneClass +"-"+ oldPane, "g"); + P.className = P.className.replace(re, o.paneClass +"-"+ pane); + + // ALWAYS regenerate the resizer & toggler elements + initHandles(pane); // create the required resizer & toggler + + // if moving to different orientation, then keep 'target' pane size + if (c.dir != _c[oldPane].dir) { + size = sizes[pane] || 0; + setSizeLimits(pane); // update pane-state + size = max(size, state[pane].minSize); + // use manualSizePane to disable autoResize - not useful after panes are swapped + manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation + } + else // move the resizer here + $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0)); + + + // ADD CLASSNAMES & SLIDE-BINDINGS + if (oPane.state.isVisible && !s.isVisible) + setAsOpen(pane, true); // true = skipCallback + else { + setAsClosed(pane); + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + // DESTROY the object + oPane = null; + }; + } + + + /** + * INTERNAL method to sync pin-buttons when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), setAsOpen(), setAsClosed() + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns = function (pane, doPin) { + if ($.layout.plugins.buttons) + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(Instance, $(selector), pane, doPin); + }); + } + +; // END var DECLARATIONS + + /** + * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed + * + * @see document.keydown() + */ + function keyDown (evt) { + if (!evt) return true; + var code = evt.keyCode; + if (code < 33) return true; // ignore special keys: ENTER, TAB, etc + + var + PANE = { + 38: "north" // Up Cursor - $.ui.keyCode.UP + , 40: "south" // Down Cursor - $.ui.keyCode.DOWN + , 37: "west" // Left Cursor - $.ui.keyCode.LEFT + , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT + } + , ALT = evt.altKey // no worky! + , SHIFT = evt.shiftKey + , CTRL = evt.ctrlKey + , CURSOR = (CTRL && code >= 37 && code <= 40) + , o, k, m, pane + ; + + if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey + pane = PANE[code]; + else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey + $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey + o = options[p]; + k = o.customHotkey; + m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT" + if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches + if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches + pane = p; + return false; // BREAK + } + } + }); + + // validate pane + if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden) + return true; + + toggle(pane); + + evt.stopPropagation(); + evt.returnValue = false; // CANCEL key + return false; + }; + + +/* + * ###################################### + * UTILITY METHODS + * called externally or by initButtons + * ###################################### + */ + + /** + * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work + * + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function allowOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + ; + + // if pane is already raised, then reset it before doing it again! + // this would happen if allowOverflow is attached to BOTH the pane and an element + if (s.cssSaved) + resetOverflow(pane); // reset previous CSS before continuing + + // if pane is raised by sliding or resizing, or its closed, then abort + if (s.isSliding || s.isResizing || s.isClosed) { + s.cssSaved = false; + return; + } + + var + newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) } + , curCSS = {} + , of = $P.css("overflow") + , ofX = $P.css("overflowX") + , ofY = $P.css("overflowY") + ; + // determine which, if any, overflow settings need to be changed + if (of != "visible") { + curCSS.overflow = of; + newCSS.overflow = "visible"; + } + if (ofX && !ofX.match(/(visible|auto)/)) { + curCSS.overflowX = ofX; + newCSS.overflowX = "visible"; + } + if (ofY && !ofY.match(/(visible|auto)/)) { + curCSS.overflowY = ofX; + newCSS.overflowY = "visible"; + } + + // save the current overflow settings - even if blank! + s.cssSaved = curCSS; + + // apply new CSS to raise zIndex and, if necessary, make overflow 'visible' + $P.css( newCSS ); + + // make sure the zIndex of all other panes is normal + $.each(_c.allPanes, function(i, p) { + if (p != pane) resetOverflow(p); + }); + + }; + /** + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function resetOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + , CSS = s.cssSaved || {} + ; + // reset the zIndex + if (!s.isSliding && !s.isResizing) + $P.css("zIndex", options.zIndexes.pane_normal); + + // reset Overflow - if necessary + $P.css( CSS ); + + // clear var + s.cssSaved = false; + }; + +/* + * ##################### + * CREATE/RETURN LAYOUT + * ##################### + */ + + // validate that container exists + var $N = $(this).eq(0); // FIRST matching Container element + if (!$N.length) { + return _log( options.errors.containerMissing ); + }; + + // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout") + // return the Instance-pointer if layout has already been initialized + if ($N.data("layoutContainer") && $N.data("layout")) + return $N.data("layout"); // cached pointer + + // init global vars + var + $Ps = {} // Panes x5 - set in initPanes() + , $Cs = {} // Content x5 - set in initPanes() + , $Rs = {} // Resizers x4 - set in initHandles() + , $Ts = {} // Togglers x4 - set in initHandles() + , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV) + // aliases for code brevity + , sC = state.container // alias for easy access to 'container dimensions' + , sID = state.id // alias for unique layout ID/namespace - eg: "layout435" + ; + + // create Instance object to expose data & option Properties, and primary action Methods + var Instance = { + // layout data + options: options // property - options hash + , state: state // property - dimensions hash + // object pointers + , container: $N // property - object pointers for layout container + , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center + , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center + , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north + , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north + // border-pane open/close + , hide: hide // method - ditto + , show: show // method - ditto + , toggle: toggle // method - pass a 'pane' ("north", "west", etc) + , open: open // method - ditto + , close: close // method - ditto + , slideOpen: slideOpen // method - ditto + , slideClose: slideClose // method - ditto + , slideToggle: slideToggle // method - ditto + // pane actions + , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data + , _sizePane: sizePane // method -intended for user by plugins only! + , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto' + , sizeContent: sizeContent // method - pass a 'pane' + , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them + , showMasks: showMasks // method - pass a 'pane' OR list of panes - default = all panes with mask option set + , hideMasks: hideMasks // method - ditto' + // pane element methods + , initContent: initContent // method - ditto + , addPane: addPane // method - pass a 'pane' + , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem + , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions + // special pane option setting + , enableClosable: enableClosable // method - pass a 'pane' + , disableClosable: disableClosable // method - ditto + , enableSlidable: enableSlidable // method - ditto + , disableSlidable: disableSlidable // method - ditto + , enableResizable: enableResizable // method - ditto + , disableResizable: disableResizable// method - ditto + // utility methods for panes + , allowOverflow: allowOverflow // utility - pass calling element (this) + , resetOverflow: resetOverflow // utility - ditto + // layout control + , destroy: destroy // method - no parameters + , initPanes: isInitialized // method - no parameters + , resizeAll: resizeAll // method - no parameters + // callback triggering + , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west") + // alias collections of options, state and children - created in addPane and extended elsewhere + , hasParentLayout: false // set by initContainer() + , children: children // pointers to child-layouts, eg: Instance.children["west"] + , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] } + , south: false // ditto + , west: false // ditto + , east: false // ditto + , center: false // ditto + }; + + // create the border layout NOW + if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation + return null; + else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later + return Instance; // return the Instance object + +} + + +/* OLD versions of jQuery only set $.support.boxModel after page is loaded + * so if this is IE, use support.boxModel to test for quirks-mode (ONLY IE changes boxModel). + */ +$(function(){ + var b = $.layout.browser; + if (b.msie) b.boxModel = $.support.boxModel; +}); + + +/** + * jquery.layout.state 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * @dependancies: $.ui.cookie (above) + * + * @support: http://groups.google.com/group/jquery-ui-layout + */ +/* + * State-management options stored in options.stateManagement, which includes a .cookie hash + * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden + * + * // STATE/COOKIE OPTIONS + * @example $(el).layout({ + stateManagement: { + enabled: true + , stateKeys: "east.size,west.size,east.isClosed,west.isClosed" + , cookie: { name: "appLayout", path: "/" } + } + }) + * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies + * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } }) + * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" }) + * + * // STATE/COOKIE METHODS + * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} ); + * @example myLayout.loadCookie(); + * @example myLayout.deleteCookie(); + * @example var JSON = myLayout.readState(); // CURRENT Layout State + * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie) + * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash) + * + * CUSTOM STATE-MANAGEMENT (eg, saved in a database) + * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" ); + * @example myLayout.loadState( JSON ); + */ + +/** + * UI COOKIE UTILITY + * + * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then... + * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin + * NOTE: This utility is REQUIRED by the layout.state plugin + * + * Cookie methods in Layout are created as part of State Management + */ +if (!$.ui) $.ui = {}; +$.ui.cookie = { + + // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6 + acceptsCookies: !!navigator.cookieEnabled + +, read: function (name) { + var + c = document.cookie + , cs = c ? c.split(';') : [] + , pair // loop var + ; + for (var i=0, n=cs.length; i < n; i++) { + pair = $.trim(cs[i]).split('='); // name=value pair + if (pair[0] == name) // found the layout cookie + return decodeURIComponent(pair[1]); + + } + return null; + } + +, write: function (name, val, cookieOpts) { + var + params = '' + , date = '' + , clear = false + , o = cookieOpts || {} + , x = o.expires + ; + if (x && x.toUTCString) + date = x; + else if (x === null || typeof x === 'number') { + date = new Date(); + if (x > 0) + date.setDate(date.getDate() + x); + else { + date.setFullYear(1970); + clear = true; + } + } + if (date) params += ';expires='+ date.toUTCString(); + if (o.path) params += ';path='+ o.path; + if (o.domain) params += ';domain='+ o.domain; + if (o.secure) params += ';secure'; + document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie + } + +, clear: function (name) { + $.ui.cookie.write(name, '', {expires: -1}); + } + +}; +// if cookie.jquery.js is not loaded, create an alias to replicate it +// this may be useful to other plugins or code dependent on that plugin +if (!$.cookie) $.cookie = function (k, v, o) { + var C = $.ui.cookie; + if (v === null) + C.clear(k); + else if (v === undefined) + return C.read(k); + else + C.write(k, v, o); +}; + + +// tell Layout that the state plugin is available +$.layout.plugins.stateManagement = true; + +// Add State-Management options to layout.defaults +$.layout.config.optionRootKeys.push("stateManagement"); +$.layout.defaults.stateManagement = { + enabled: false // true = enable state-management, even if not using cookies +, autoSave: true // Save a state-cookie when page exits? +, autoLoad: true // Load the state-cookie when Layout inits? + // List state-data to save - must be pane-specific +, stateKeys: "north.size,south.size,east.size,west.size,"+ + "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+ + "north.isHidden,south.isHidden,east.isHidden,west.isHidden" +, cookie: { + name: "" // If not specified, will use Layout.name, else just "Layout" + , domain: "" // blank = current domain + , path: "" // blank = current page, '/' = entire website + , expires: "" // 'days' to keep cookie - leave blank for 'session cookie' + , secure: false + } +}; +// Set stateManagement as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("stateManagement"); + +/* + * State Management methods + */ +$.layout.state = { + + /** + * Get the current layout state and save it to a cookie + * + * myLayout.saveCookie( keys, cookieOpts ) + * + * @param {Object} inst + * @param {(string|Array)=} keys + * @param {Object=} cookieOpts + */ + saveCookie: function (inst, keys, cookieOpts) { + var o = inst.options + , oS = o.stateManagement + , oC = $.extend(true, {}, oS.cookie, cookieOpts || null) + , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state + ; + $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC ); + return $.extend(true, {}, data); // return COPY of state.stateData data + } + + /** + * Remove the state cookie + * + * @param {Object} inst + */ +, deleteCookie: function (inst) { + var o = inst.options; + $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" ); + } + + /** + * Read & return data from the cookie - as JSON + * + * @param {Object} inst + */ +, readCookie: function (inst) { + var o = inst.options; + var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" ); + // convert cookie string back to a hash and return it + return c ? $.layout.state.decodeJSON(c) : {}; + } + + /** + * Get data from the cookie and USE IT to loadState + * + * @param {Object} inst + */ +, loadCookie: function (inst) { + var c = $.layout.state.readCookie(inst); // READ the cookie + if (c) { + inst.state.stateData = $.extend(true, {}, c); // SET state.stateData + inst.loadState(c); // LOAD the retrieved state + } + return c; + } + + /** + * Update layout options from the cookie, if one exists + * + * @param {Object} inst + * @param {Object=} stateData + * @param {boolean=} animate + */ +, loadState: function (inst, stateData, animate) { + stateData = $.layout.transformData( stateData ); // panes = default subkey + if ($.isEmptyObject( stateData )) return; + $.extend(true, inst.options, stateData); // update layout options + // if layout has already been initialized, then UPDATE layout state + if (inst.state.initialized) { + var pane, vis, o, s, h, c + , noAnimate = (animate===false) + ; + $.each($.layout.config.borderPanes, function (idx, pane) { + state = inst.state[pane]; + o = stateData[ pane ]; + if (typeof o != 'object') return; // no key, continue + s = o.size; + c = o.initClosed; + h = o.initHidden; + vis = state.isVisible; + // resize BEFORE opening + if (!vis) + inst.sizePane(pane, s, false, false); + if (h === true) inst.hide(pane, noAnimate); + else if (c === false) inst.open (pane, false, noAnimate); + else if (c === true) inst.close(pane, false, noAnimate); + else if (h === false) inst.show (pane, false, noAnimate); + // resize AFTER any other actions + if (vis) + inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed + }); + }; + } + + /** + * Get the *current layout state* and return it as a hash + * + * @param {Object=} inst + * @param {(string|Array)=} keys + */ +, readState: function (inst, keys) { + var + data = {} + , alt = { isClosed: 'initClosed', isHidden: 'initHidden' } + , state = inst.state + , panes = $.layout.config.allPanes + , pair, pane, key, val + ; + if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user + if ($.isArray(keys)) keys = keys.join(","); + // convert keys to an array and change delimiters from '__' to '.' + keys = keys.replace(/__/g, ".").split(','); + // loop keys and create a data hash + for (var i=0, n=keys.length; i < n; i++) { + pair = keys[i].split("."); + pane = pair[0]; + key = pair[1]; + if ($.inArray(pane, panes) < 0) continue; // bad pane! + val = state[ pane ][ key ]; + if (val == undefined) continue; + if (key=="isClosed" && state[pane]["isSliding"]) + val = true; // if sliding, then *really* isClosed + ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val; + } + return data; + } + + /** + * Stringify a JSON hash so can save in a cookie or db-field + */ +, encodeJSON: function (JSON) { + return parse(JSON); + function parse (h) { + var D=[], i=0, k, v, t; // k = key, v = value + for (k in h) { + v = h[k]; + t = typeof v; + if (t == 'string') // STRING - add quotes + v = '"'+ v +'"'; + else if (t == 'object') // SUB-KEY - recurse into it + v = parse(v); + D[i++] = '"'+ k +'":'+ v; + } + return '{'+ D.join(',') +'}'; + }; + } + + /** + * Convert stringified JSON back to a hash object + * @see $.parseJSON(), adding in jQuery 1.4.1 + */ +, decodeJSON: function (str) { + try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; } + catch (e) { return {}; } + } + + +, _create: function (inst) { + var _ = $.layout.state; + // ADD State-Management plugin methods to inst + $.extend( inst, { + // readCookie - update options from cookie - returns hash of cookie data + readCookie: function () { return _.readCookie(inst); } + // deleteCookie + , deleteCookie: function () { _.deleteCookie(inst); } + // saveCookie - optionally pass keys-list and cookie-options (hash) + , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); } + // loadCookie - readCookie and use to loadState() - returns hash of cookie data + , loadCookie: function () { return _.loadCookie(inst); } + // loadState - pass a hash of state to use to update options + , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); } + // readState - returns hash of current layout-state + , readState: function (keys) { return _.readState(inst, keys); } + // add JSON utility methods too... + , encodeJSON: _.encodeJSON + , decodeJSON: _.decodeJSON + }); + + // init state.stateData key, even if plugin is initially disabled + inst.state.stateData = {}; + + // read and load cookie-data per options + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoLoad) // update the options from the cookie + inst.loadCookie(); + else // don't modify options - just store cookie data in state.stateData + inst.state.stateData = inst.readCookie(); + } + } + +, _unload: function (inst) { + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoSave) // save a state-cookie automatically + inst.saveCookie(); + else // don't save a cookie, but do store state-data in state.stateData key + inst.state.stateData = inst.readState(); + } + } + +}; + +// add state initialization method to Layout's onCreate array of functions +$.layout.onCreate.push( $.layout.state._create ); +$.layout.onUnload.push( $.layout.state._unload ); + + + + +/** + * jquery.layout.buttons 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * Docs: [ to come ] + * Tips: [ to come ] + */ + +// tell Layout that the state plugin is available +$.layout.plugins.buttons = true; + +// Add buttons options to layout.defaults +$.layout.defaults.autoBindCustomButtons = false; +// Specify autoBindCustomButtons as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("autoBindCustomButtons"); + +/* + * Button methods + */ +$.layout.buttons = { + + /** + * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons + * + * @see _create() + * + * @param {Object} inst Layout Instance object + */ + init: function (inst) { + var pre = "ui-layout-button-" + , layout = inst.options.name || "" + , name; + $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) { + $.each($.layout.config.borderPanes, function (ii, pane) { + $("."+pre+action+"-"+pane).each(function(){ + // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name' + name = $(this).data("layoutName") || $(this).attr("layoutName"); + if (name == undefined || name === layout) + inst.bindButton(this, action, pane); + }); + }); + }); + } + + /** + * Helper function to validate params received by addButton utilities + * + * Two classes are added to the element, based on the buttonClass... + * The type of button is appended to create the 2nd className: + * - ui-layout-button-pin // action btnClass + * - ui-layout-button-pin-west // action btnClass + pane + * - ui-layout-button-toggle + * - ui-layout-button-open + * - ui-layout-button-close + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * + * @return {Array.} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null + */ +, get: function (inst, selector, pane, action) { + var $E = $(selector) + , o = inst.options + , err = o.errors.addButtonError + ; + if (!$E.length) { // element not found + $.layout.msg(err +" "+ o.errors.selector +": "+ selector, true); + } + else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified + $.layout.msg(err +" "+ o.errors.pane +": "+ pane, true); + $E = $(""); // NO BUTTON + } + else { // VALID + var btn = o[pane].buttonClass +"-"+ action; + $E .addClass( btn +" "+ btn +"-"+ pane ) + .data("layoutName", o.name); // add layout identifier - even if blank! + } + return $E; + } + + + /** + * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc. + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} action + * @param {string} pane + */ +, bind: function (inst, selector, action, pane) { + var _ = $.layout.buttons; + switch (action.toLowerCase()) { + case "toggle": _.addToggle (inst, selector, pane); break; + case "open": _.addOpen (inst, selector, pane); break; + case "close": _.addClose (inst, selector, pane); break; + case "pin": _.addPin (inst, selector, pane); break; + case "toggle-slide": _.addToggle (inst, selector, pane, true); break; + case "open-slide": _.addOpen (inst, selector, pane, true); break; + } + return inst; + } + + /** + * Add a custom Toggler button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addToggle: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "toggle") + .click(function(evt){ + inst.toggle(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Open button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addOpen: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "open") + .attr("title", inst.options[pane].tips.Open) + .click(function (evt) { + inst.open(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Close button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + */ +, addClose: function (inst, selector, pane) { + $.layout.buttons.get(inst, selector, pane, "close") + .attr("title", inst.options[pane].tips.Close) + .click(function (evt) { + inst.close(pane); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Pin button for a pane + * + * Four classes are added to the element, based on the paneClass for the associated pane... + * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin: + * - ui-layout-pane-pin + * - ui-layout-pane-west-pin + * - ui-layout-pane-pin-up + * - ui-layout-pane-west-pin-up + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc. + */ +, addPin: function (inst, selector, pane) { + var _ = $.layout.buttons + , $E = _.get(inst, selector, pane, "pin"); + if ($E.length) { + var s = inst.state[pane]; + $E.click(function (evt) { + _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed)); + if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open + else inst.close( pane ); // slide-closed + evt.stopPropagation(); + }); + // add up/down pin attributes and classes + _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding)); + // add this pin to the pane data so we can 'sync it' automatically + // PANE.pins key is an array so we can store multiple pins for each pane + s.pins.push( selector ); // just save the selector string + } + return inst; + } + + /** + * Change the class of the pin button to make it look 'up' or 'down' + * + * @see addPin(), syncPins() + * + * @param {Object} inst Layout Instance object + * @param {Array.} $Pin The pin-span element in a jQuery wrapper + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin true = set the pin 'down', false = set it 'up' + */ +, setPinState: function (inst, $Pin, pane, doPin) { + var updown = $Pin.attr("pin"); + if (updown && doPin === (updown=="down")) return; // already in correct state + var + o = inst.options[pane] + , pin = o.buttonClass +"-pin" + , side = pin +"-"+ pane + , UP = pin +"-up "+ side +"-up" + , DN = pin +"-down "+side +"-down" + ; + $Pin + .attr("pin", doPin ? "down" : "up") // logic + .attr("title", doPin ? o.tips.Unpin : o.tips.Pin) + .removeClass( doPin ? UP : DN ) + .addClass( doPin ? DN : UP ) + ; + } + + /** + * INTERNAL function to sync 'pin buttons' when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), close() + * + * @param {Object} inst Layout Instance object + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns: function (inst, pane, doPin) { + // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE + $.each(inst.state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(inst, $(selector), pane, doPin); + }); + } + + +, _load: function (inst) { + var _ = $.layout.buttons; + // ADD Button methods to Layout Instance + // Note: sel = jQuery Selector string + $.extend( inst, { + bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); } + // DEPRECATED METHODS + , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); } + , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); } + , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); } + , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); } + }); + + // init state array to hold pin-buttons + for (var i=0; i<4; i++) { + var pane = $.layout.config.borderPanes[i]; + inst.state[pane].pins = []; + } + + // auto-init buttons onLoad if option is enabled + if ( inst.options.autoBindCustomButtons ) + _.init(inst); + } + +, _unload: function (inst) { + // TODO: unbind all buttons??? + } + +}; + +// add initialization method to Layout's onLoad array of functions +$.layout.onLoad.push( $.layout.buttons._load ); +//$.layout.onUnload.push( $.layout.buttons._unload ); + + + +/** + * jquery.layout.browserZoom 1.0 + * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $ + * + * Copyright (c) 2012 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * @todo: Extend logic to handle other problematic zooming in browsers + * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event + */ + +// tell Layout that the plugin is available +$.layout.plugins.browserZoom = true; + +$.layout.defaults.browserZoomCheckInterval = 1000; +$.layout.optionsMap.layout.push("browserZoomCheckInterval"); + +/* + * browserZoom methods + */ +$.layout.browserZoom = { + + _init: function (inst) { + // abort if browser does not need this check + if ($.layout.browserZoom.ratio() !== false) + $.layout.browserZoom._setTimer(inst); + } + +, _setTimer: function (inst) { + // abort if layout destroyed or browser does not need this check + if (inst.destroyed) return; + var o = inst.options + , s = inst.state + // don't need check if inst has parentLayout, but check occassionally in case parent destroyed! + // MINIMUM 100ms interval, for performance + , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 ) + ; + // set the timer + setTimeout(function(){ + if (inst.destroyed || !o.resizeWithWindow) return; + var d = $.layout.browserZoom.ratio(); + if (d !== s.browserZoom) { + s.browserZoom = d; + inst.resizeAll(); + } + // set a NEW timeout + $.layout.browserZoom._setTimer(inst); + } + , ms ); + } + +, ratio: function () { + var w = window + , s = screen + , d = document + , dE = d.documentElement || d.body + , b = $.layout.browser + , v = b.version + , r, sW, cW + ; + // we can ignore all browsers that fire window.resize event onZoom + if ((b.msie && v > 8) + || !b.msie + ) return false; // don't need to track zoom + + if (s.deviceXDPI) + return calc(s.deviceXDPI, s.systemXDPI); + // everything below is just for future reference! + if (b.webkit && (r = d.body.getBoundingClientRect)) + return calc((r.left - r.right), d.body.offsetWidth); + if (b.webkit && (sW = w.outerWidth)) + return calc(sW, w.innerWidth); + if ((sW = s.width) && (cW = dE.clientWidth)) + return calc(sW, cW); + return false; // no match, so cannot - or don't need to - track zoom + + function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); } + } + +}; +// add initialization method to Layout's onLoad array of functions +$.layout.onReady.push( $.layout.browserZoom._init ); + + + +})( jQuery ); diff --git a/api/lib/modernizr.custom.js b/api/lib/modernizr.custom.js new file mode 100644 index 0000000..4688d63 --- /dev/null +++ b/api/lib/modernizr.custom.js @@ -0,0 +1,4 @@ +/* Modernizr 2.5.3 (Custom Build) | MIT & BSD + * Build: http://www.modernizr.com/download/#-inlinesvg + */ +;window.Modernizr=function(a,b,c){function u(a){i.cssText=a}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.5.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={svg:"http://www.w3.org/2000/svg"},m={},n={},o={},p=[],q=p.slice,r,s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e}),m.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==l.svg};for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));return u(""),h=j=null,e._version=d,e}(this,this.document); \ No newline at end of file diff --git a/api/lib/navigation-li-a.png b/api/lib/navigation-li-a.png new file mode 100644 index 0000000..9b32288 Binary files /dev/null and b/api/lib/navigation-li-a.png differ diff --git a/api/lib/navigation-li.png b/api/lib/navigation-li.png new file mode 100644 index 0000000..fd0ad06 Binary files /dev/null and b/api/lib/navigation-li.png differ diff --git a/api/lib/object.png b/api/lib/object.png new file mode 100644 index 0000000..ad31279 Binary files /dev/null and b/api/lib/object.png differ diff --git a/api/lib/object_big.png b/api/lib/object_big.png new file mode 100644 index 0000000..67ffca7 Binary files /dev/null and b/api/lib/object_big.png differ diff --git a/api/lib/object_diagram.png b/api/lib/object_diagram.png new file mode 100644 index 0000000..6e9f2f7 Binary files /dev/null and b/api/lib/object_diagram.png differ diff --git a/api/lib/object_to_class_big.png b/api/lib/object_to_class_big.png new file mode 100644 index 0000000..7502942 Binary files /dev/null and b/api/lib/object_to_class_big.png differ diff --git a/api/lib/object_to_trait_big.png b/api/lib/object_to_trait_big.png new file mode 100644 index 0000000..c777bfc Binary files /dev/null and b/api/lib/object_to_trait_big.png differ diff --git a/api/lib/object_to_type_big.png b/api/lib/object_to_type_big.png new file mode 100644 index 0000000..7502942 Binary files /dev/null and b/api/lib/object_to_type_big.png differ diff --git a/api/lib/ownderbg2.gif b/api/lib/ownderbg2.gif new file mode 100644 index 0000000..848dd59 Binary files /dev/null and b/api/lib/ownderbg2.gif differ diff --git a/api/lib/ownerbg.gif b/api/lib/ownerbg.gif new file mode 100644 index 0000000..34a0424 Binary files /dev/null and b/api/lib/ownerbg.gif differ diff --git a/api/lib/ownerbg2.gif b/api/lib/ownerbg2.gif new file mode 100644 index 0000000..2ed33b0 Binary files /dev/null and b/api/lib/ownerbg2.gif differ diff --git a/api/lib/package.png b/api/lib/package.png new file mode 100644 index 0000000..6ea17ac Binary files /dev/null and b/api/lib/package.png differ diff --git a/api/lib/package_big.png b/api/lib/package_big.png new file mode 100644 index 0000000..529aa93 Binary files /dev/null and b/api/lib/package_big.png differ diff --git a/api/lib/packagesbg.gif b/api/lib/packagesbg.gif new file mode 100644 index 0000000..00c3378 Binary files /dev/null and b/api/lib/packagesbg.gif differ diff --git a/api/lib/permalink.png b/api/lib/permalink.png new file mode 100644 index 0000000..d54bc93 Binary files /dev/null and b/api/lib/permalink.png differ diff --git a/api/lib/ref-index.css b/api/lib/ref-index.css new file mode 100644 index 0000000..7d64b9c --- /dev/null +++ b/api/lib/ref-index.css @@ -0,0 +1,30 @@ +body { + font-size: 10pt; + font-family: Arial, sans-serif; +} + +a { + color:#315479; +} + +.letters { + width:100%; + text-align:center; + margin:0.6em; + padding:0.1em; + border-bottom:1px solid gray; +} + +.entry { + border-bottom: 1px solid lightgray; + padding: 5px 0 8px; +} + +.name { + /* background-color:#E5E5E5; */ +} + +.occurrences { + margin-left: 1em; + margin-top: 5px; +} \ No newline at end of file diff --git a/api/lib/remove.png b/api/lib/remove.png new file mode 100644 index 0000000..4625f9d Binary files /dev/null and b/api/lib/remove.png differ diff --git a/api/lib/scheduler.js b/api/lib/scheduler.js new file mode 100644 index 0000000..4417f5b --- /dev/null +++ b/api/lib/scheduler.js @@ -0,0 +1,71 @@ +// © 2010 EPFL/LAMP +// code by Gilles Dubochet + +function Scheduler() { + var scheduler = this; + var resolution = 0; + this.timeout = undefined; + this.queues = new Array(0); // an array of work pacakges indexed by index in the labels table. + this.labels = new Array(0); // an indexed array of labels indexed by priority. This should be short. + this.label = function(name, priority) { + this.name = name; + this.priority = priority; + } + this.work = function(fn, self, args) { + this.fn = fn; + this.self = self; + this.args = args; + } + this.addLabel = function(name, priority) { + var idx = 0; + while (idx < scheduler.queues.length && scheduler.labels[idx].priority <= priority) { idx = idx + 1; } + scheduler.labels.splice(idx, 0, new scheduler.label(name, priority)); + scheduler.queues.splice(idx, 0, new Array(0)); + } + this.clearLabel = function(name) { + var idx = 0; + while (idx < scheduler.queues.length && scheduler.labels[idx].name != name) { idx = idx + 1; } + if (idx < scheduler.queues.length && scheduler.labels[i].name == name) { + scheduler.labels.splice(idx, 1); + scheduler.queues.splice(idx, 1); + } + } + this.nextWork = function() { + var fn = undefined; + var idx = 0; + while (idx < scheduler.queues.length && scheduler.queues[idx].length == 0) { idx = idx + 1; } + if (idx < scheduler.queues.length && scheduler.queues[idx].length > 0) { + var fn = scheduler.queues[idx].shift(); + } + return fn; + } + this.add = function(labelName, fn, self, args) { + var doWork = function() { + scheduler.timeout = setTimeout(function() { + var work = scheduler.nextWork(); + if (work != undefined) { + if (work.args == undefined) { work.args = new Array(0); } + work.fn.apply(work.self, work.args); + doWork(); + } + else { + scheduler.timeout = undefined; + } + }, resolution); + } + var idx = 0; + while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; } + if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) { + scheduler.queues[idx].push(new scheduler.work(fn, self, args)); + if (scheduler.timeout == undefined) doWork(); + } + else throw("queue for add is non existant"); + } + this.clear = function(labelName) { + var idx = 0; + while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; } + if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) { + scheduler.queues[idx] = new Array(); + } + } +}; diff --git a/api/lib/selected-implicits.png b/api/lib/selected-implicits.png new file mode 100644 index 0000000..bc29efb Binary files /dev/null and b/api/lib/selected-implicits.png differ diff --git a/api/lib/selected-right-implicits.png b/api/lib/selected-right-implicits.png new file mode 100644 index 0000000..8313f49 Binary files /dev/null and b/api/lib/selected-right-implicits.png differ diff --git a/api/lib/selected-right.png b/api/lib/selected-right.png new file mode 100644 index 0000000..04eda2f Binary files /dev/null and b/api/lib/selected-right.png differ diff --git a/api/lib/selected.png b/api/lib/selected.png new file mode 100644 index 0000000..c897652 Binary files /dev/null and b/api/lib/selected.png differ diff --git a/api/lib/selected2-right.png b/api/lib/selected2-right.png new file mode 100644 index 0000000..bf984ef Binary files /dev/null and b/api/lib/selected2-right.png differ diff --git a/api/lib/selected2.png b/api/lib/selected2.png new file mode 100644 index 0000000..a790bb1 Binary files /dev/null and b/api/lib/selected2.png differ diff --git a/api/lib/signaturebg.gif b/api/lib/signaturebg.gif new file mode 100644 index 0000000..b6ac441 Binary files /dev/null and b/api/lib/signaturebg.gif differ diff --git a/api/lib/signaturebg2.gif b/api/lib/signaturebg2.gif new file mode 100644 index 0000000..9aae5ba Binary files /dev/null and b/api/lib/signaturebg2.gif differ diff --git a/api/lib/template.css b/api/lib/template.css new file mode 100644 index 0000000..e84d7c1 --- /dev/null +++ b/api/lib/template.css @@ -0,0 +1,893 @@ +/* Reset */ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, code, pre, +del, dfn, em, img, q, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, input, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + font-weight: inherit; + font-style: inherit; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; +} + +table { border-collapse: separate; border-spacing: 0; } +caption, th, td { text-align: left; font-weight: normal; } +table, td, th { vertical-align: middle; } + +blockquote:before, blockquote:after, q:before, q:after { content: ""; } +blockquote, q { quotes: none; } + +a img { border: none; } + +input { border-width: 0px; } + +/* Page */ + +body { + font-family: Arial, sans-serif; + font-size: 10pt; +} + +#footer { + font-size: 9pt; + text-align: center; + color: #858484; + bottom: 0; + width: 100%; + height: 20px; +} + +a[href] { + text-decoration: underline; + color: #315479; +} + +a[href]:hover { + text-decoration: none; +} + +#types ol li > p { + margin-top: 5px; +} + +#types ol li:last-child { + margin-bottom: 5px; +} + +/* +#definition { + padding: 6px 0 6px 6px; + min-height: 59px; + color: white; +} +*/ + +#definition { + display: block-inline; + padding: 5px 0px; + height: 61px; +} + +#definition > img { + float: left; + padding-right: 6px; + padding-left: 5px; +} + +#definition > a > img { + float: left; + padding-right: 6px; + padding-left: 5px; +} + +#definition p + h1 { + margin-top: 3px; +} + +#definition > h1 { +/* padding: 12px 0 12px 6px;*/ + color: white; + text-shadow: 3px black; + text-shadow: black 0px 2px 0px; + font-size: 24pt; + display: inline-block; + overflow: hidden; + margin-top: 10px; +} + +#definition h1 > a { + color: #ffffff; + font-size: 24pt; + text-shadow: black 0px 2px 0px; +/* text-shadow: black 0px 0px 0px;*/ +text-decoration: none; +} + +#definition #owner { + color: #ffffff; + margin-top: 4px; + font-size: 10pt; + overflow: hidden; +} + +#definition #owner > a { + color: #ffffff; +} + +#definition #owner > a:hover { + text-decoration: none; +} + +#signature { + background-image:url('signaturebg2.gif'); + background-color: #d7d7d7; + min-height: 18px; + background-repeat:repeat-x; + font-size: 11.5pt; +/* margin-bottom: 10px;*/ + padding: 8px; +} + +#signature > span.modifier_kind { + display: inline; + float: left; + text-align: left; + width: auto; + position: static; + text-shadow: 2px white; + text-shadow: white 0px 1px 0px; +} + +#signature > span.symbol { + text-align: left; + display: inline; + padding-left: 0.7em; + text-shadow: 2px white; + text-shadow: white 0px 1px 0px; +} + +/* Linear super types and known subclasses */ +.hiddenContent { + display: none; +} + +.toggleContainer .toggle { + cursor: pointer; + padding-left: 15px; + background: url("arrow-right.png") no-repeat 0 3px transparent; +} + +.toggleContainer .toggle.open { + background: url("arrow-down.png") no-repeat 0 3px transparent; +} + +.toggleContainer .hiddenContent { + margin-top: 5px; +} + +.value #definition { + background-color: #2C475C; /* blue */ + background-image:url('defbg-blue.gif'); + background-repeat:repeat-x; +} + +.type #definition { + background-color: #316555; /* green */ + background-image:url('defbg-green.gif'); + background-repeat:repeat-x; +} + +#template { + margin-bottom: 50px; +} + +h3 { + color: white; + padding: 5px 10px; + font-size: 12pt; + font-weight: bold; + text-shadow: black 1px 1px 0px; +} + +dl.attributes > dt { + display: block; + float: left; + font-style: italic; +} + +dl.attributes > dt.implicit { + font-weight: bold; + color: darkgreen; +} + +dl.attributes > dd { + display: block; + padding-left: 10em; + margin-bottom: 5px; + min-height: 15px; +} + +#template .values > h3 { + background: #2C475C url("valuemembersbg.gif") repeat-x bottom left; /* grayish blue */ + height: 18px; +} + +#values ol li:last-child { + margin-bottom: 5px; +} + +#template .types > h3 { + background: #316555 url("typebg.gif") repeat-x bottom left; /* green */ + height: 18px; +} + +#constructors > h3 { + background: #4f504f url("constructorsbg.gif") repeat-x bottom left; /* gray */ + height: 18px; +} + +#inheritedMembers > div.parent > h3 { + background: #dadada url("constructorsbg.gif") repeat-x bottom left; /* gray */ + height: 17px; + font-style: italic; + font-size: 12pt; +} + +#inheritedMembers > div.parent > h3 * { + color: white; +} + +#inheritedMembers > div.conversion > h3 { + background: #dadada url("conversionbg.gif") repeat-x bottom left; /* gray */ + height: 17px; + font-style: italic; + font-size: 12pt; +} + +#inheritedMembers > div.conversion > h3 * { + color: white; +} + +#groupedMembers > div.group > h3 { + background: #dadada url("typebg.gif") repeat-x bottom left; /* green */ + height: 17px; + font-size: 12pt; +} + +#groupedMembers > div.group > h3 * { + color: white; +} + + +/* Member cells */ + +div.members > ol { + background-color: white; + list-style: none +} + +div.members > ol > li { + display: block; + border-bottom: 1px solid gray; + padding: 5px 0 6px; + margin: 0 10px; + position: relative; +} + +div.members > ol > li:last-child { + border: 0; + padding: 5px 0 5px; +} + +/* Member signatures */ + +#tooltip { + background: #EFD5B5; + border: 1px solid gray; + color: black; + display: none; + padding: 5px; + position: absolute; +} + +.signature { + font-family: monospace; + font-size: 10pt; + line-height: 18px; + clear: both; + display: block; + text-shadow: 2px white; + text-shadow: white 0px 1px 0px; +} + +.signature .modifier_kind { + position: absolute; + text-align: right; + width: 14em; +} + +.signature > a > .symbol > .name { + text-decoration: underline; +} + +.signature > a:hover > .symbol > .name { + text-decoration: none; +} + +.signature > a { + text-decoration: none; +} + +.signature > .symbol { + display: block; + padding-left: 14.7em; +} + +.signature .name { + display: inline-block; + font-weight: bold; +} + +.signature .symbol > .implicit { + display: inline-block; + font-weight: bold; + text-decoration: underline; + color: darkgreen; +} + +.signature .symbol .shadowed { + color: darkseagreen; +} + +.signature .symbol .params > .implicit { + font-style: italic; +} + +.signature .symbol .deprecated { + text-decoration: line-through; +} + +.signature .symbol .params .default { + font-style: italic; +} + +#template .signature.closed { + background: url("arrow-right.png") no-repeat 0 5px transparent; + cursor: pointer; +} + +#template .signature.opened { + background: url("arrow-down.png") no-repeat 0 5px transparent; + cursor: pointer; +} + +#template .values .signature .name { + color: darkblue; +} + +#template .types .signature .name { + color: darkgreen; +} + +.full-signature-usecase h4 span { + font-size: 10pt; +} + +.full-signature-usecase > #signature { + padding-top: 0px; +} + +#template .full-signature-usecase > .signature.closed { + background: none; +} + +#template .full-signature-usecase > .signature.opened { + background: none; +} + +.full-signature-block { + padding: 5px 0 0; + border-top: 1px solid #EBEBEB; + margin-top: 5px; + margin-bottom: 5px; +} + +#definition .morelinks { + text-align: right; + position: absolute; + top: 40px; + right: 10px; + width: 450px; +} + +#definition .morelinks a { + color: #EBEBEB; +} + +#template .members li .permalink { + position: absolute; + top: 5px; + right: 5px; +} + +#definition .permalink { + position: absolute; + top: 10px; + right: 15px; +} + +#definition .permalink a { + color: #EBEBEB; +} + +#template .members li .permalink, +#definition .permalink a { + display: none; +} + +#template .members li:hover .permalink, +#definition:hover .permalink a { + display: block; +} + +#template .members li .permalink a, +#definition .permalink a { + text-decoration: none; + font-weight: bold; +} + +/* Comments text formating */ + +.cmt {} + +.cmt p { + margin: 0.7em 0; +} + +.cmt p:first-child { + margin-top: 0; +} + +.cmt p:last-child { + margin-bottom: 0; +} + +.cmt h3, +.cmt h4, +.cmt h5, +.cmt h6 { + margin-bottom: 0.7em; + margin-top: 1.4em; + display: block; + text-align: left; + font-weight: bold; +} + +.cmt h3 { + font-size: 14pt; +} + +.cmt h4 { + font-size: 13pt; +} + +.cmt h5 { + font-size: 12pt; +} + +.cmt h6 { + font-size: 11pt; +} + +.cmt pre { + padding: 5px; + border: 1px solid #ddd; + background-color: #eee; + margin: 5px 0; + display: block; + font-family: monospace; +} + +.cmt pre span.ano { + color: blue; +} + +.cmt pre span.cmt { + color: green; +} + +.cmt pre span.kw { + font-weight: bold; +} + +.cmt pre span.lit { + color: #c71585; +} + +.cmt pre span.num { + color: #1e90ff; /* dodgerblue */ +} + +.cmt pre span.std { + color: #008080; /* teal */ +} + +.cmt ul { + display: block; + list-style: circle; + padding-left: 20px; +} + +.cmt ol { + display: block; + padding-left:20px; +} + +.cmt ol.decimal { + list-style: decimal; +} + +.cmt ol.lowerAlpha { + list-style: lower-alpha; +} + +.cmt ol.upperAlpha { + list-style: upper-alpha; +} + +.cmt ol.lowerRoman { + list-style: lower-roman; +} + +.cmt ol.upperRoman { + list-style: upper-roman; +} + +.cmt li { + display: list-item; +} + +.cmt code { + font-family: monospace; +} + +.cmt a { + font-style: bold; +} + +.cmt em, .cmt i { + font-style: italic; +} + +.cmt strong, .cmt b { + font-weight: bold; +} + +/* Comments structured layout */ + +.group > div.comment { + padding-top: 5px; + padding-bottom: 5px; + padding-right: 5px; + padding-left: 5px; + border: 1px solid #ddd; + background-color: #eeeee; + margin-top:5px; + margin-bottom:5px; + margin-right:5px; + margin-left:5px; + display: block; +} + +p.comment { + display: block; + margin-left: 14.7em; + margin-top: 5px; +} + +.shortcomment { + display: block; + margin: 5px 10px; +} + +div.fullcommenttop { + padding: 10px 10px; + background-image:url('fullcommenttopbg.gif'); + background-repeat:repeat-x; +} + +div.fullcomment { + margin: 5px 10px; +} + +#template div.fullcommenttop, +#template div.fullcomment { + display:none; + margin: 5px 0 0 14.7em; +} + +#template .shortcomment { + margin: 5px 0 0 14.7em; + padding: 0; +} + +div.fullcomment .block { + padding: 5px 0 0; + border-top: 1px solid #EBEBEB; + margin-top: 5px; + overflow: hidden; +} + +div.fullcommenttop .block { + padding: 5px 0 0; + border-top: 1px solid #EBEBEB; + margin-top: 5px; + margin-bottom: 5px +} + +div.fullcomment div.block ol li p, +div.fullcomment div.block ol li { + display:inline +} + +div.fullcomment .block > h5 { + font-style: italic; + font-weight: normal; + display: inline-block; +} + +div.fullcomment .comment { + margin: 5px 0 10px; +} + +div.fullcommenttop .comment:last-child, +div.fullcomment .comment:last-child { + margin-bottom: 0; +} + +div.fullcommenttop dl.paramcmts { + margin-bottom: 0.8em; + padding-bottom: 0.8em; +} + +div.fullcommenttop dl.paramcmts > dt, +div.fullcomment dl.paramcmts > dt { + display: block; + float: left; + font-weight: bold; + min-width: 70px; +} + +div.fullcommenttop dl.paramcmts > dd, +div.fullcomment dl.paramcmts > dd { + display: block; + padding-left: 10px; + margin-bottom: 5px; + margin-left: 70px; + min-height: 15px; +} + +/* Members filter tool */ + +#textfilter { + position: relative; + display: block; + height: 20px; + margin-bottom: 5px; +} + +#textfilter > .pre { + display: block; + position: absolute; + top: 0; + left: 0; + height: 23px; + width: 21px; + background: url("filter_box_left.png"); +} + +#textfilter > .input { + display: block; + position: absolute; + top: 0; + right: 20px; + left: 20px; +} + +#textfilter > .input > input { + height: 20px; + padding: 1px; + font-weight: bold; + color: #000000; + background: #ffffff url("filterboxbarbg.png") repeat-x top left; + width: 100%; +} + +#textfilter > .post { + display: block; + position: absolute; + top: 0; + right: 0; + height: 23px; + width: 21px; + background: url("filter_box_right.png"); +} + +#mbrsel { + padding: 5px 10px; + background-color: #ededee; /* light gray */ + background-image:url('filterboxbg.gif'); + background-repeat:repeat-x; + font-size: 9.5pt; + display: block; + margin-top: 1em; +/* margin-bottom: 1em; */ +} + +#mbrsel > div { + margin-bottom: 5px; +} + +#mbrsel > div:last-child { + margin-bottom: 0; +} + +#mbrsel > div > span.filtertype { + padding: 4px; + margin-right: 5px; + float: left; + display: inline-block; + color: #000000; + font-weight: bold; + text-shadow: white 0px 1px 0px; + width: 4.5em; +} + +#mbrsel > div > ol { + display: inline-block; +} + +#mbrsel > div > a { + position:relative; + top: -8px; + font-size: 11px; + text-shadow: #ffffff 0 1px 0; +} + +#mbrsel > div > ol#linearization { + display: table; + margin-left: 70px; +} + +#mbrsel > div > ol#linearization > li.in { + text-decoration: none; + float: left; + padding-right: 10px; + margin-right: 5px; + background: url(selected-right.png) no-repeat; + background-position: right 0px; +} + +#mbrsel > div > ol#linearization > li.in > span{ + color: #404040; + float: left; + padding: 1px 0 1px 10px; + background: url(selected.png) no-repeat; + background-position: 0px 0px; + text-shadow: #ffffff 0 1px 0; +} + +#mbrsel > div > ol#implicits { + display: table; + margin-left: 70px; +} + +#mbrsel > div > ol#implicits > li.in { + text-decoration: none; + float: left; + padding-right: 10px; + margin-right: 5px; + background: url(selected-right-implicits.png) no-repeat; + background-position: right 0px; +} + +#mbrsel > div > ol#implicits > li.in > span{ + color: #404040; + float: left; + padding: 1px 0 1px 10px; + background: url(selected-implicits.png) no-repeat; + background-position: 0px 0px; + text-shadow: #ffffff 0 1px 0; +} + +#mbrsel > div > ol > li { +/* padding: 3px 10px;*/ + line-height: 16pt; + display: inline-block; + cursor: pointer; +} + +#mbrsel > div > ol > li.in { + text-decoration: none; + float: left; + padding-right: 10px; + margin-right: 5px; + background: url(selected-right.png) no-repeat; + background-position: right 0px; +} + +#mbrsel > div > ol > li.in > span{ + color: #404040; + float: left; + padding: 1px 0 1px 10px; + background: url(selected.png) no-repeat; + background-position: 0px 0px; + text-shadow: #ffffff 0 1px 0; +} + +#mbrsel > div > ol > li.out { + text-decoration: none; + float: left; + padding-right: 10px; + margin-right: 5px; +} + +#mbrsel > div > ol > li.out > span{ + color: #747474; +/* background-color: #999; */ + float: left; + padding: 1px 0 1px 10px; +/* background: url(unselected.png) no-repeat;*/ + background-position: 0px -1px; + text-shadow: #ffffff 0 1px 0; +} +/* +#mbrsel .hideall { + color: #4C4C4C; + line-height: 16px; + font-weight: bold; +} + +#mbrsel .hideall span { + color: #4C4C4C; + font-weight: bold; +} + +#mbrsel .showall { + color: #4C4C4C; + line-height: 16px; + font-weight: bold; +} + +#mbrsel .showall span { + color: #4C4C4C; + font-weight: bold; +}*/ + +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.badge-red { + background-color: #b94a48; +} diff --git a/api/lib/template.js b/api/lib/template.js new file mode 100644 index 0000000..798a2d4 --- /dev/null +++ b/api/lib/template.js @@ -0,0 +1,500 @@ +// © 2009–2010 EPFL/LAMP +// code by Gilles Dubochet with contributions by Pedro Furlanetto and Marcin Kubala + +$(document).ready(function(){ + + var controls = { + visibility: { + publicOnly: $("#visbl").find("> ol > li.public"), + all: $("#visbl").find("> ol > li.all") + } + }; + + // Escapes special characters and returns a valid jQuery selector + function escapeJquery(str){ + return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=<>\|])/g, '\\$1'); + } + + function toggleVisibilityFilter(ctrlToEnable, ctrToDisable) { + if (ctrlToEnable.hasClass("out")) { + ctrlToEnable.removeClass("out").addClass("in"); + ctrToDisable.removeClass("in").addClass("out"); + filter(); + } + } + + controls.visibility.publicOnly.click(function () { + toggleVisibilityFilter(controls.visibility.publicOnly, controls.visibility.all); + }); + + controls.visibility.all.click(function () { + toggleVisibilityFilter(controls.visibility.all, controls.visibility.publicOnly); + }); + + function exposeMember(jqElem) { + var jqElemParent = jqElem.parent(), + parentName = jqElemParent.attr("name"), + linearizationName = /^([^#]*)(#.*)?$/gi.exec(parentName)[1]; + + // switch visibility filter if necessary + if (jqElemParent.attr("visbl") == "prt") { + toggleVisibilityFilter(controls.visibility.all, controls.visibility.publicOnly); + } + + // toggle appropriate linearization buttons + if (linearizationName) { + $("#linearization li.out[name='" + linearizationName + "']").removeClass("out").addClass("in"); + } + + filter(); + window.scrollTo(0, 0); + jqElemParent.effect("highlight", {color: "#FFCC85"}, 3000); + $('html,body').animate({scrollTop: jqElemParent.offset().top}, 1000); + } + + var isHiddenClass = function (name) { + return name == 'scala.Any' || + name == 'scala.AnyRef'; + }; + + var isHidden = function (elem) { + return $(elem).attr("data-hidden") == 'true'; + }; + + $("#linearization li:gt(0)").filter(function(){ + return isHiddenClass($(this).attr("name")); + }).removeClass("in").addClass("out"); + + $("#implicits li").filter(function(){ + return isHidden(this); + }).removeClass("in").addClass("out"); + + // Pre-filter members + filter(); + + // Member filter box + var input = $("#textfilter input"); + input.bind("keyup", function(event) { + + switch ( event.keyCode ) { + + case 27: // escape key + input.val(""); + filter(true); + break; + + case 38: // up + input.val(""); + filter(false); + window.scrollTo(0, $("body").offset().top); + input.focus(); + break; + + case 33: //page up + input.val(""); + filter(false); + break; + + case 34: //page down + input.val(""); + filter(false); + break; + + default: + window.scrollTo(0, $("#mbrsel").offset().top); + filter(true); + break; + + } + }); + input.focus(function(event) { + input.select(); + }); + $("#textfilter > .post").click(function() { + $("#textfilter input").attr("value", ""); + filter(); + }); + $(document).keydown(function(event) { + + if (event.keyCode == 9) { // tab + $("#index-input", window.parent.document).focus(); + input.attr("value", ""); + return false; + } + }); + + $("#linearization li").click(function(){ + if ($(this).hasClass("in")) { + $(this).removeClass("in"); + $(this).addClass("out"); + } + else if ($(this).hasClass("out")) { + $(this).removeClass("out"); + $(this).addClass("in"); + } + filter(); + }); + + $("#implicits li").click(function(){ + if ($(this).hasClass("in")) { + $(this).removeClass("in"); + $(this).addClass("out"); + } + else if ($(this).hasClass("out")) { + $(this).removeClass("out"); + $(this).addClass("in"); + } + filter(); + }); + + $("#mbrsel > div[id=ancestors] > ol > li.hideall").click(function() { + $("#linearization li.in").removeClass("in").addClass("out"); + $("#linearization li:first").removeClass("out").addClass("in"); + $("#implicits li.in").removeClass("in").addClass("out"); + + if ($(this).hasClass("out") && $("#mbrsel > div[id=ancestors] > ol > li.showall").hasClass("in")) { + $(this).removeClass("out").addClass("in"); + $("#mbrsel > div[id=ancestors] > ol > li.showall").removeClass("in").addClass("out"); + } + + filter(); + }) + $("#mbrsel > div[id=ancestors] > ol > li.showall").click(function() { + var filteredLinearization = + $("#linearization li.out").filter(function() { + return ! isHiddenClass($(this).attr("name")); + }); + filteredLinearization.removeClass("out").addClass("in"); + + var filteredImplicits = + $("#implicits li.out").filter(function() { + return ! isHidden(this); + }); + filteredImplicits.removeClass("out").addClass("in"); + + if ($(this).hasClass("out") && $("#mbrsel > div[id=ancestors] > ol > li.hideall").hasClass("in")) { + $(this).removeClass("out").addClass("in"); + $("#mbrsel > div[id=ancestors] > ol > li.hideall").removeClass("in").addClass("out"); + } + + filter(); + }); + $("#order > ol > li.alpha").click(function() { + if ($(this).hasClass("out")) { + orderAlpha(); + } + }) + $("#order > ol > li.inherit").click(function() { + if ($(this).hasClass("out")) { + orderInherit(); + } + }); + $("#order > ol > li.group").click(function() { + if ($(this).hasClass("out")) { + orderGroup(); + } + }); + $("#groupedMembers").hide(); + + initInherit(); + + // Create tooltips + $(".extype").add(".defval").tooltip({ + tip: "#tooltip", + position: "top center", + predelay: 500, + onBeforeShow: function(ev) { + $(this.getTip()).text(this.getTrigger().attr("name")); + } + }); + + /* Add toggle arrows */ + //var docAllSigs = $("#template li").has(".fullcomment").find(".signature"); + // trying to speed things up a little bit + var docAllSigs = $("#template li[fullComment=yes] .signature"); + + function commentToggleFct(signature){ + var parent = signature.parent(); + var shortComment = $(".shortcomment", parent); + var fullComment = $(".fullcomment", parent); + var vis = $(":visible", fullComment); + signature.toggleClass("closed").toggleClass("opened"); + if (vis.length > 0) { + shortComment.slideDown(100); + fullComment.slideUp(100); + } + else { + shortComment.slideUp(100); + fullComment.slideDown(100); + } + }; + docAllSigs.addClass("closed"); + docAllSigs.click(function() { + commentToggleFct($(this)); + }); + + /* Linear super types and known subclasses */ + function toggleShowContentFct(e){ + e.toggleClass("open"); + var content = $(".hiddenContent", e.parent().get(0)); + if (content.is(':visible')) { + content.slideUp(100); + } + else { + content.slideDown(100); + } + }; + + $(".toggle:not(.diagram-link)").click(function() { + toggleShowContentFct($(this)); + }); + + // Set parent window title + windowTitle(); + + if ($("#order > ol > li.group").length == 1) { orderGroup(); }; + + function findElementByHash(locationHash) { + var temp = locationHash.replace('#', ''); + var memberSelector = '#' + escapeJquery(temp); + return $(memberSelector); + } + + // highlight and jump to selected member + if (window.location.hash) { + var jqElem = findElementByHash(window.location.hash); + if (jqElem.length > 0) { + exposeMember(jqElem); + } + } +}); + +function orderAlpha() { + $("#order > ol > li.alpha").removeClass("out").addClass("in"); + $("#order > ol > li.inherit").removeClass("in").addClass("out"); + $("#order > ol > li.group").removeClass("in").addClass("out"); + $("#template > div.parent").hide(); + $("#template > div.conversion").hide(); + $("#mbrsel > div[id=ancestors]").show(); + filter(); +}; + +function orderInherit() { + $("#order > ol > li.inherit").removeClass("out").addClass("in"); + $("#order > ol > li.alpha").removeClass("in").addClass("out"); + $("#order > ol > li.group").removeClass("in").addClass("out"); + $("#template > div.parent").show(); + $("#template > div.conversion").show(); + $("#mbrsel > div[id=ancestors]").hide(); + filter(); +}; + +function orderGroup() { + $("#order > ol > li.group").removeClass("out").addClass("in"); + $("#order > ol > li.alpha").removeClass("in").addClass("out"); + $("#order > ol > li.inherit").removeClass("in").addClass("out"); + $("#template > div.parent").hide(); + $("#template > div.conversion").hide(); + $("#mbrsel > div[id=ancestors]").show(); + filter(); +}; + +/** Prepares the DOM for inheritance-based display. To do so it will: + * - hide all statically-generated parents headings; + * - copy all members from the value and type members lists (flat members) to corresponding lists nested below the + * parent headings (inheritance-grouped members); + * - initialises a control variable used by the filter method to control whether filtering happens on flat members + * or on inheritance-grouped members. */ +function initInherit() { + // inheritParents is a map from fully-qualified names to the DOM node of parent headings. + var inheritParents = new Object(); + var groupParents = new Object(); + $("#inheritedMembers > div.parent").each(function(){ + inheritParents[$(this).attr("name")] = $(this); + }); + $("#inheritedMembers > div.conversion").each(function(){ + inheritParents[$(this).attr("name")] = $(this); + }); + $("#groupedMembers > div.group").each(function(){ + groupParents[$(this).attr("name")] = $(this); + }); + + $("#types > ol > li").each(function(){ + var mbr = $(this); + this.mbrText = mbr.find("> .fullcomment .cmt").text(); + var qualName = mbr.attr("name"); + var owner = qualName.slice(0, qualName.indexOf("#")); + var name = qualName.slice(qualName.indexOf("#") + 1); + var inheritParent = inheritParents[owner]; + if (inheritParent != undefined) { + var types = $("> .types > ol", inheritParent); + if (types.length == 0) { + inheritParent.append("

      Type Members

        "); + types = $("> .types > ol", inheritParent); + } + var clone = mbr.clone(); + clone[0].mbrText = this.mbrText; + types.append(clone); + } + var group = mbr.attr("group") + var groupParent = groupParents[group]; + if (groupParent != undefined) { + var types = $("> .types > ol", groupParent); + if (types.length == 0) { + groupParent.append("
          "); + types = $("> .types > ol", groupParent); + } + var clone = mbr.clone(); + clone[0].mbrText = this.mbrText; + types.append(clone); + } + }); + + $("#values > ol > li").each(function(){ + var mbr = $(this); + this.mbrText = mbr.find("> .fullcomment .cmt").text(); + var qualName = mbr.attr("name"); + var owner = qualName.slice(0, qualName.indexOf("#")); + var name = qualName.slice(qualName.indexOf("#") + 1); + var inheritParent = inheritParents[owner]; + if (inheritParent != undefined) { + var values = $("> .values > ol", inheritParent); + if (values.length == 0) { + inheritParent.append("

          Value Members

            "); + values = $("> .values > ol", inheritParent); + } + var clone = mbr.clone(); + clone[0].mbrText = this.mbrText; + values.append(clone); + } + var group = mbr.attr("group") + var groupParent = groupParents[group]; + if (groupParent != undefined) { + var values = $("> .values > ol", groupParent); + if (values.length == 0) { + groupParent.append("
              "); + values = $("> .values > ol", groupParent); + } + var clone = mbr.clone(); + clone[0].mbrText = this.mbrText; + values.append(clone); + } + }); + $("#inheritedMembers > div.parent").each(function() { + if ($("> div.members", this).length == 0) { $(this).remove(); }; + }); + $("#inheritedMembers > div.conversion").each(function() { + if ($("> div.members", this).length == 0) { $(this).remove(); }; + }); + $("#groupedMembers > div.group").each(function() { + if ($("> div.members", this).length == 0) { $(this).remove(); }; + }); +}; + +/* filter used to take boolean scrollToMember */ +function filter() { + var query = $.trim($("#textfilter input").val()).toLowerCase(); + query = query.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&").replace(/\s+/g, "|"); + var queryRegExp = new RegExp(query, "i"); + var privateMembersHidden = $("#visbl > ol > li.public").hasClass("in"); + var orderingAlphabetic = $("#order > ol > li.alpha").hasClass("in"); + var orderingInheritance = $("#order > ol > li.inherit").hasClass("in"); + var orderingGroups = $("#order > ol > li.group").hasClass("in"); + var hiddenSuperclassElementsLinearization = orderingInheritance ? $("#linearization > li:gt(0)") : $("#linearization > li.out"); + var hiddenSuperclassesLinearization = hiddenSuperclassElementsLinearization.map(function() { + return $(this).attr("name"); + }).get(); + var hiddenSuperclassElementsImplicits = orderingInheritance ? $("#implicits > li") : $("#implicits > li.out"); + var hiddenSuperclassesImplicits = hiddenSuperclassElementsImplicits.map(function() { + return $(this).attr("name"); + }).get(); + + var hideInheritedMembers; + + if (orderingAlphabetic) { + $("#allMembers").show(); + $("#inheritedMembers").hide(); + $("#groupedMembers").hide(); + hideInheritedMembers = true; + $("#allMembers > .members").each(filterFunc); + } else if (orderingGroups) { + $("#groupedMembers").show(); + $("#inheritedMembers").hide(); + $("#allMembers").hide(); + hideInheritedMembers = true; + $("#groupedMembers > .group > .members").each(filterFunc); + $("#groupedMembers > div.group").each(function() { + $(this).show(); + if ($("> div.members", this).not(":hidden").length == 0) { + $(this).hide(); + } else { + $(this).show(); + } + }); + } else if (orderingInheritance) { + $("#inheritedMembers").show(); + $("#groupedMembers").hide(); + $("#allMembers").hide(); + hideInheritedMembers = false; + $("#inheritedMembers > .parent > .members").each(filterFunc); + $("#inheritedMembers > .conversion > .members").each(filterFunc); + } + + + function filterFunc() { + var membersVisible = false; + var members = $(this); + members.find("> ol > li").each(function() { + var mbr = $(this); + if (privateMembersHidden && mbr.attr("visbl") == "prt") { + mbr.hide(); + return; + } + var name = mbr.attr("name"); + // Owner filtering must not happen in "inherited from" member lists + if (hideInheritedMembers) { + var ownerIndex = name.indexOf("#"); + if (ownerIndex < 0) { + ownerIndex = name.lastIndexOf("."); + } + var owner = name.slice(0, ownerIndex); + for (var i = 0; i < hiddenSuperclassesLinearization.length; i++) { + if (hiddenSuperclassesLinearization[i] == owner) { + mbr.hide(); + return; + } + }; + for (var i = 0; i < hiddenSuperclassesImplicits.length; i++) { + if (hiddenSuperclassesImplicits[i] == owner) { + mbr.hide(); + return; + } + }; + } + if (query && !(queryRegExp.test(name) || queryRegExp.test(this.mbrText))) { + mbr.hide(); + return; + } + mbr.show(); + membersVisible = true; + }); + + if (membersVisible) + members.show(); + else + members.hide(); + }; + + return false; +}; + +function windowTitle() +{ + try { + parent.document.title=document.title; + } + catch(e) { + // Chrome doesn't allow settings the parent's title when + // used on the local file system. + } +}; diff --git a/api/lib/tools.tooltip.js b/api/lib/tools.tooltip.js new file mode 100644 index 0000000..0af34ec --- /dev/null +++ b/api/lib/tools.tooltip.js @@ -0,0 +1,14 @@ +/* + * tools.tooltip 1.1.3 - Tooltips done right. + * + * Copyright (c) 2009 Tero Piirainen + * http://flowplayer.org/tools/tooltip.html + * + * Dual licensed under MIT and GPL 2+ licenses + * http://www.opensource.org/licenses + * + * Launch : November 2008 + * Date: ${date} + * Revision: ${revision} + */ +(function(c){var d=[];c.tools=c.tools||{};c.tools.tooltip={version:"1.1.3",conf:{effect:"toggle",fadeOutSpeed:"fast",tip:null,predelay:0,delay:30,opacity:1,lazy:undefined,position:["top","center"],offset:[0,0],cancelDefault:true,relative:false,oneInstance:true,events:{def:"mouseover,mouseout",input:"focus,blur",widget:"focus mouseover,blur mouseout",tooltip:"mouseover,mouseout"},api:false},addEffect:function(e,g,f){b[e]=[g,f]}};var b={toggle:[function(e){var f=this.getConf(),g=this.getTip(),h=f.opacity;if(h<1){g.css({opacity:h})}g.show();e.call()},function(e){this.getTip().hide();e.call()}],fade:[function(e){this.getTip().fadeIn(this.getConf().fadeInSpeed,e)},function(e){this.getTip().fadeOut(this.getConf().fadeOutSpeed,e)}]};function a(f,g){var p=this,k=c(this);f.data("tooltip",p);var l=f.next();if(g.tip){l=c(g.tip);if(l.length>1){l=f.nextAll(g.tip).eq(0);if(!l.length){l=f.parent().nextAll(g.tip).eq(0)}}}function o(u){var t=g.relative?f.position().top:f.offset().top,s=g.relative?f.position().left:f.offset().left,v=g.position[0];t-=l.outerHeight()-g.offset[0];s+=f.outerWidth()+g.offset[1];var q=l.outerHeight()+f.outerHeight();if(v=="center"){t+=q/2}if(v=="bottom"){t+=q}v=g.position[1];var r=l.outerWidth()+f.outerWidth();if(v=="center"){s-=r/2}if(v=="left"){s-=r}return{top:t,left:s}}var i=f.is(":input"),e=i&&f.is(":checkbox, :radio, select, :button"),h=f.attr("type"),n=g.events[h]||g.events[i?(e?"widget":"input"):"def"];n=n.split(/,\s*/);if(n.length!=2){throw"Tooltip: bad events configuration for "+h}f.bind(n[0],function(r){if(g.oneInstance){c.each(d,function(){this.hide()})}var q=l.data("trigger");if(q&&q[0]!=this){l.hide().stop(true,true)}r.target=this;p.show(r);n=g.events.tooltip.split(/,\s*/);l.bind(n[0],function(){p.show(r)});if(n[1]){l.bind(n[1],function(){p.hide(r)})}});f.bind(n[1],function(q){p.hide(q)});if(!c.browser.msie&&!i&&!g.predelay){f.mousemove(function(){if(!p.isShown()){f.triggerHandler("mouseover")}})}if(g.opacity<1){l.css("opacity",g.opacity)}var m=0,j=f.attr("title");if(j&&g.cancelDefault){f.removeAttr("title");f.data("title",j)}c.extend(p,{show:function(r){if(r){f=c(r.target)}clearTimeout(l.data("timer"));if(l.is(":animated")||l.is(":visible")){return p}function q(){l.data("trigger",f);var t=o(r);if(g.tip&&j){l.html(f.data("title"))}r=r||c.Event();r.type="onBeforeShow";k.trigger(r,[t]);if(r.isDefaultPrevented()){return p}t=o(r);l.css({position:"absolute",top:t.top,left:t.left});var s=b[g.effect];if(!s){throw'Nonexistent effect "'+g.effect+'"'}s[0].call(p,function(){r.type="onShow";k.trigger(r)})}if(g.predelay){clearTimeout(m);m=setTimeout(q,g.predelay)}else{q()}return p},hide:function(r){clearTimeout(l.data("timer"));clearTimeout(m);if(!l.is(":visible")){return}function q(){r=r||c.Event();r.type="onBeforeHide";k.trigger(r);if(r.isDefaultPrevented()){return}b[g.effect][1].call(p,function(){r.type="onHide";k.trigger(r)})}if(g.delay&&r){l.data("timer",setTimeout(q,g.delay))}else{q()}return p},isShown:function(){return l.is(":visible, :animated")},getConf:function(){return g},getTip:function(){return l},getTrigger:function(){return f},bind:function(q,r){k.bind(q,r);return p},onHide:function(q){return this.bind("onHide",q)},onBeforeShow:function(q){return this.bind("onBeforeShow",q)},onShow:function(q){return this.bind("onShow",q)},onBeforeHide:function(q){return this.bind("onBeforeHide",q)},unbind:function(q){k.unbind(q);return p}});c.each(g,function(q,r){if(c.isFunction(r)){p.bind(q,r)}})}c.prototype.tooltip=function(e){var f=this.eq(typeof e=="number"?e:0).data("tooltip");if(f){return f}var g=c.extend(true,{},c.tools.tooltip.conf);if(c.isFunction(e)){e={onBeforeShow:e}}else{if(typeof e=="string"){e={tip:e}}}e=c.extend(true,g,e);if(typeof e.position=="string"){e.position=e.position.split(/,?\s/)}if(e.lazy!==false&&(e.lazy===true||this.length>20)){this.one("mouseover",function(h){f=new a(c(this),e);f.show(h);d.push(f)})}else{this.each(function(){f=new a(c(this),e);d.push(f)})}return e.api?f:this}})(jQuery); \ No newline at end of file diff --git a/api/lib/trait.png b/api/lib/trait.png new file mode 100644 index 0000000..fb961a2 Binary files /dev/null and b/api/lib/trait.png differ diff --git a/api/lib/trait_big.png b/api/lib/trait_big.png new file mode 100644 index 0000000..625d925 Binary files /dev/null and b/api/lib/trait_big.png differ diff --git a/api/lib/trait_diagram.png b/api/lib/trait_diagram.png new file mode 100644 index 0000000..8898325 Binary files /dev/null and b/api/lib/trait_diagram.png differ diff --git a/api/lib/trait_to_object_big.png b/api/lib/trait_to_object_big.png new file mode 100644 index 0000000..d0cd7fd Binary files /dev/null and b/api/lib/trait_to_object_big.png differ diff --git a/api/lib/type.png b/api/lib/type.png new file mode 100644 index 0000000..6c6e1fe Binary files /dev/null and b/api/lib/type.png differ diff --git a/api/lib/type_big.png b/api/lib/type_big.png new file mode 100644 index 0000000..04c8794 Binary files /dev/null and b/api/lib/type_big.png differ diff --git a/api/lib/type_diagram.png b/api/lib/type_diagram.png new file mode 100644 index 0000000..d815252 Binary files /dev/null and b/api/lib/type_diagram.png differ diff --git a/api/lib/type_to_object_big.png b/api/lib/type_to_object_big.png new file mode 100644 index 0000000..ef2615b Binary files /dev/null and b/api/lib/type_to_object_big.png differ diff --git a/api/lib/typebg.gif b/api/lib/typebg.gif new file mode 100644 index 0000000..2fcc77b Binary files /dev/null and b/api/lib/typebg.gif differ diff --git a/api/lib/unselected.png b/api/lib/unselected.png new file mode 100644 index 0000000..d5ac639 Binary files /dev/null and b/api/lib/unselected.png differ diff --git a/api/lib/valuemembersbg.gif b/api/lib/valuemembersbg.gif new file mode 100644 index 0000000..2a94931 Binary files /dev/null and b/api/lib/valuemembersbg.gif differ diff --git a/api/package.html b/api/package.html new file mode 100644 index 0000000..b941069 --- /dev/null +++ b/api/package.html @@ -0,0 +1,118 @@ + + + + root - _root_ + + + + + + + + + + + + + + + +
              + Package + +

              root package

              + + Permalink + + +
              + +

              + + + package + + + root + +

              + +
              + + +
              +
              + + +
              + Visibility +
              1. Public
              2. All
              +
              +
              + +
              +
              + + + + + + +
              +

              Value Members

              +
              1. + + +

                + + + package + + + com + +

                + + Permalink + + + +
              +
              + + + + +
              + +
              + + +
              + +
              +
              +

              Ungrouped

              + +
              +
              + +
              + +
              + + + + + + diff --git a/bigquery/src/main/resources/log4j.properties b/bigquery/src/main/resources/log4j.properties deleted file mode 100644 index 8cb5c8e..0000000 --- a/bigquery/src/main/resources/log4j.properties +++ /dev/null @@ -1,13 +0,0 @@ -# Change this to set Spark log level -log4j.logger.org.apache.spark=WARN - -# Silence akka remoting -log4j.logger.Remoting=WARN -log4j.logger.akka=WARN - -# Silence verbose messages from Hadoop ecosystem -log4j.logger.org.apache.hadoop=ERROR -log4j.logger.org.apache.parquet=ERROR - -# Ignore messages below warning level from Jetty, because it's a bit verbose -log4j.logger.org.eclipse.jetty=WARN diff --git a/bigquery/src/main/resources/reference.conf b/bigquery/src/main/resources/reference.conf deleted file mode 100644 index 995c43f..0000000 --- a/bigquery/src/main/resources/reference.conf +++ /dev/null @@ -1,16 +0,0 @@ -# Based on the Google Cloud Storage settings documented here: -# https://cloud.google.com/hadoop/google-cloud-storage-connector#configuringhadoop -spark.hadoop.fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem -spark.hadoop.fs.AbstractFileSystem.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS -spark.hadoop.fs.gs.auth.service.account.json.keyfile = ${?GOOGLE_APPLICATION_CREDENTIALS} -spark.hadoop.fs.gs.project.id = ${?GOOGLE_PROJECT_ID} - -# NOTE: Requires distributed file system to make credential files available -spark.hadoop.mapred.bq.auth.service.account.json.keyfile = ${?GOOGLE_APPLICATION_CREDENTIALS} -spark.hadoop.mapred.bq.project.id = ${?GOOGLE_PROJECT_ID} - -# Default GCS bucket for uploading to BigQuery -spark.hadoop.mapred.bq.gcs.bucket = ${?GOOGLE_BQ_BUCKET} - -# Google OAuth Credentials -spark.google.cloud.auth.client.file = ${?GOOGLE_OAUTH_CREDENTIALS} diff --git a/bigquery/src/main/scala/com.mediative.amadou.bigquery/BigQueryClient.scala b/bigquery/src/main/scala/com.mediative.amadou.bigquery/BigQueryClient.scala deleted file mode 100644 index ac01570..0000000 --- a/bigquery/src/main/scala/com.mediative.amadou.bigquery/BigQueryClient.scala +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou.bigquery - -import java.util.UUID - -import com.google.api.client.googleapis.auth.oauth2.GoogleCredential -import com.google.api.client.googleapis.json.GoogleJsonResponseException -import com.google.api.client.googleapis.json.GoogleJsonError -import com.google.api.client.http.javanet.NetHttpTransport -import com.google.api.client.json.jackson2.JacksonFactory -import com.google.api.services.bigquery.model._ -import com.google.api.services.bigquery.{Bigquery, BigqueryScopes} -import com.google.cloud.hadoop.io.bigquery._ -import org.apache.hadoop.conf.Configuration -import org.apache.hadoop.util.Progressable -import org.slf4j.{Logger, LoggerFactory} - -import scala.collection.JavaConverters._ -import scala.util.control.NonFatal -import scala.util.Try - -private[bigquery] object BigQueryClient { - val STAGING_DATASET_PREFIX = "bq.staging_dataset.prefix" - val STAGING_DATASET_PREFIX_DEFAULT = "spark_bigquery_staging_" - val STAGING_DATASET_LOCATION = "bq.staging_dataset.location" - val STAGING_DATASET_LOCATION_DEFAULT = "US" - val STAGING_DATASET_TABLE_EXPIRATION_MS = 86400000L - val STAGING_DATASET_DESCRIPTION = "Spark BigQuery staging dataset" - - private var instance: BigQueryClient = null - - def getInstance(conf: Configuration): BigQueryClient = { - if (instance == null) { - instance = new BigQueryClient(conf) - } - instance - } -} - -private[bigquery] class BigQueryClient(conf: Configuration) { - - import BigQueryClient._ - - private val logger: Logger = LoggerFactory.getLogger(classOf[BigQueryClient]) - - private val SCOPES = List(BigqueryScopes.BIGQUERY).asJava - - private val bigquery: Bigquery = { - val credential = GoogleCredential.getApplicationDefault.createScoped(SCOPES) - new Bigquery.Builder(new NetHttpTransport, new JacksonFactory, credential) - .setApplicationName("spark-bigquery") - .build() - } - - private def projectId: String = conf.get(BigQueryConfiguration.PROJECT_ID_KEY) - - private def inConsole = - Thread - .currentThread() - .getStackTrace - .exists(_.getClassName.startsWith("scala.tools.nsc.interpreter.")) - private val PRIORITY = if (inConsole) "INTERACTIVE" else "BATCH" - private val TABLE_ID_PREFIX = "spark_bigquery" - private val JOB_ID_PREFIX = "spark_bigquery" - - /** Matcher for "Missing table" errors. */ - object TableNotFound { - def unapply(error: Throwable): Option[GoogleJsonError.ErrorInfo] = error match { - case error: GoogleJsonResponseException => - Some(error.getDetails) - .filter(_.getCode == 404) - .flatMap(_.getErrors.asScala.find(_.getReason == "notFound")) - case _ => None - } - } - - def tableInfo(table: TableReference): Table = - bigquery.tables().get(table.getProjectId, table.getDatasetId, table.getTableId).execute() - - /** - * Perform a BigQuery SELECT query and save results to the destination table. - */ - def query( - sqlQuery: String, - destinationTable: TableReference, - writeDisposition: WriteDisposition.Value): TableReference = { - logger.info(s"Executing query $sqlQuery") - logger.info(s"Destination table: $destinationTable") - - val job = - createQueryJob(sqlQuery, destinationTable, dryRun = false, PRIORITY, writeDisposition) - logger.info("JOB ID: " + job.getId) - waitForJob(job) - logger.info("JOB STATUS: " + job.getStatus.getState) - destinationTable - } - - /** - * Extract table to *.csv.gz files in GCS - */ - def extract(sourceTable: TableReference, gcsPath: String): Unit = { - val destination = gcsPath + "/*.csv.gz" - logger.info(s"extracting $sourceTable to $destination") - val extractConfig = new JobConfigurationExtract() - .setDestinationFormat("CSV") - .setCompression("GZIP") - .setDestinationUri(destination) - .setSourceTable(sourceTable) - val jobConfig = new JobConfiguration().setExtract(extractConfig) - val jobReference = createJobReference(projectId, JOB_ID_PREFIX) - val job = new Job().setConfiguration(jobConfig).setJobReference(jobReference) - bigquery.jobs().insert(projectId, job).execute() - waitForJob(job) - } - - /** - * Checks if data has been loaded into a table for a specific date. - * - * Performs the following checks and returns false if either succeeds: - * - the table does not exists - * - the table never modified on or after the specified date - * - the table does not contain any data for the specified date - * - * The last check will query the table and check whether any entries exists for - * the column provided via `lastModifiedColumn`. - */ - def hasDataForDate( - table: TableReference, - date: java.sql.Date, - lastModifiedColumn: String): Boolean = { - val wasModifiedToday = Try { - val bqTable = - bigquery.tables().get(table.getProjectId, table.getDatasetId, table.getTableId).execute() - bqTable.getLastModifiedTime.longValue() >= date.getTime - } recover { - case TableNotFound(message) => false - } - - def partitionHasData = { - val partition = s"${table.getProjectId}:${table.getDatasetId}.${table.getTableId}" - val job = createQueryJob( - s"SELECT count(*) > 1 FROM [$partition] WHERE $lastModifiedColumn >= TIMESTAMP($date) LIMIT 1", - null, - false, - "INTERACTIVE" - ) - waitForJob(job) - val result = bigquery.jobs.getQueryResults(projectId, job.getJobReference.getJobId).execute() - val value = result.getRows.get(0).getF.get(0).getV - value == "true" - } - - wasModifiedToday.get && partitionHasData - } - - // XXX: Workaround to support CREATE_IF_NEEDED for date-partitioned tables - private def createPartitionedTableIfMissing(destinationTable: TableReference): Unit = { - val table = new TableReference() - .setProjectId(destinationTable.getProjectId) - .setDatasetId(destinationTable.getDatasetId) - .setTableId(destinationTable.getTableId.replaceAll("[$].*", "")) - - val result = Try { - bigquery.tables().get(table.getProjectId, table.getDatasetId, table.getTableId).execute() - } recover { - case TableNotFound(message) => - val tableConfiguration = new Table() - .setTableReference(table) - .setTimePartitioning(new TimePartitioning().setType("DAY")) - logger.info(s"Creating date-partitioned table using $tableConfiguration") - bigquery - .tables() - .insert(table.getProjectId, table.getDatasetId, tableConfiguration) - .execute() - } - - result.get - () - } - - /** - * Load an JSON data set on GCS to a BigQuery table. - */ - def load( - gcsPath: String, - destinationTable: TableReference, - schema: TableSchema, - writeDisposition: WriteDisposition.Value = null, - createDisposition: CreateDisposition.Value = null): Unit = { - val tableName = BigQueryStrings.toString(destinationTable) - logger.info(s"Loading $gcsPath into $tableName using ${writeDisposition}/$createDisposition") - var loadConfig = new JobConfigurationLoad() - .setDestinationTable(destinationTable) - .setSourceFormat("NEWLINE_DELIMITED_JSON") - .setSourceUris(List(gcsPath + "/*.json").asJava) - .setSchema(schema) - - if (writeDisposition != null) { - loadConfig = loadConfig.setWriteDisposition(writeDisposition.toString) - } - - if (createDisposition != null) { - if (createDisposition == CreateDisposition.CREATE_IF_NEEDED && destinationTable.getTableId - .contains("$")) - createPartitionedTableIfMissing(destinationTable) - else - loadConfig = loadConfig.setCreateDisposition(createDisposition.toString) - } - - val jobConfig = new JobConfiguration().setLoad(loadConfig) - val jobReference = createJobReference(projectId, JOB_ID_PREFIX) - val job = new Job().setConfiguration(jobConfig).setJobReference(jobReference) - bigquery.jobs().insert(projectId, job).execute() - waitForJob(job) - } - - private def waitForJob(job: Job): Unit = - BigQueryUtils.waitForJobCompletion(bigquery, projectId, job.getJobReference, new Progressable { - override def progress(): Unit = println("") - }) - - private def stagingDataset(location: String): DatasetReference = { - // Create staging dataset if it does not already exist - val prefix = conf.get(STAGING_DATASET_PREFIX, STAGING_DATASET_PREFIX_DEFAULT) - val datasetId = prefix + location.toLowerCase - try { - bigquery.datasets().get(projectId, datasetId).execute() - logger.info(s"Staging dataset $projectId:$datasetId already exists") - } catch { - case e: GoogleJsonResponseException if e.getStatusCode == 404 => - logger.info(s"Creating staging dataset $projectId:$datasetId") - val dsRef = new DatasetReference().setProjectId(projectId).setDatasetId(datasetId) - val ds = new Dataset() - .setDatasetReference(dsRef) - .setDefaultTableExpirationMs(STAGING_DATASET_TABLE_EXPIRATION_MS) - .setDescription(STAGING_DATASET_DESCRIPTION) - .setLocation(location) - bigquery - .datasets() - .insert(projectId, ds) - .execute() - - case NonFatal(e) => throw e - } - new DatasetReference().setProjectId(projectId).setDatasetId(datasetId) - } - - private def createQueryJob( - sqlQuery: String, - destinationTable: TableReference, - dryRun: Boolean, - priority: String, - writeDisposition: WriteDisposition.Value = WriteDisposition.WRITE_EMPTY): Job = { - var queryConfig = new JobConfigurationQuery() - .setQuery(sqlQuery) - .setPriority(priority) - .setCreateDisposition("CREATE_IF_NEEDED") - .setWriteDisposition(writeDisposition.toString) - if (destinationTable != null) { - queryConfig = queryConfig - .setDestinationTable(destinationTable) - .setAllowLargeResults(true) - } - - val jobConfig = new JobConfiguration().setQuery(queryConfig).setDryRun(dryRun) - val jobReference = createJobReference(projectId, JOB_ID_PREFIX) - val job = new Job().setConfiguration(jobConfig).setJobReference(jobReference) - try { - bigquery.jobs().insert(projectId, job).execute() - } catch { - case ex: Exception => - logger.error(ex.getMessage, ex) - ex.printStackTrace() - throw ex - } - } - - private def createJobReference(projectId: String, jobIdPrefix: String): JobReference = { - val fullJobId = projectId + "-" + UUID.randomUUID().toString - new JobReference().setProjectId(projectId).setJobId(fullJobId) - } - -} diff --git a/bigquery/src/main/scala/com.mediative.amadou.bigquery/BigQueryTable.scala b/bigquery/src/main/scala/com.mediative.amadou.bigquery/BigQueryTable.scala deleted file mode 100644 index dfb4044..0000000 --- a/bigquery/src/main/scala/com.mediative.amadou.bigquery/BigQueryTable.scala +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou -package bigquery - -import com.google.api.services.bigquery.model.TableReference - -object BigQueryTable { - type PartitionMapper = DateInterval => DateInterval - type Reference = com.google.api.services.bigquery.model.TableReference - - val PartitionByMonth = BigQueryTable.PartitionStrategy(Month.apply) - val PartitionByDay = BigQueryTable.PartitionStrategy(Day.apply) - - case class PartitionStrategy(mapper: PartitionMapper) { - def partitionSuffix(date: DateInterval): String = "$" + mapper(date).format("yyyyMMdd") - } -} - -/** - * Holds information about how to load data into BigQuery. - * - * Example: - * {{{ - * scala> val date = com.mediative.amadou.Day(2016, 9, 7) - * scala> val table = BigQueryTable("company_bi", "finance", "billing") - * scala> table.referenceFor(date) - * res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing} - * scala> table.partitionedByDay.referenceFor(date) - * res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing$20160907} - * scala> table.partitionedByMonth.referenceFor(date) - * res1: BigQueryTable.Reference = {datasetId=finance, projectId=company_bi, tableId=billing$20160901} - * }}} - * - * @define 20160907 20160907 - * @define 20160901 20160901 - */ -case class BigQueryTable( - project: String, - dataset: String, - table: String, - partitionBy: Option[BigQueryTable.PartitionStrategy] = None) { - - def partitionedByDay = copy(partitionBy = Some(BigQueryTable.PartitionByDay)) - def partitionedByMonth = copy(partitionBy = Some(BigQueryTable.PartitionByMonth)) - - def reference(): BigQueryTable.Reference = - new TableReference() - .setProjectId(project) - .setDatasetId(dataset) - .setTableId(table) - - def referenceFor(date: DateInterval): BigQueryTable.Reference = - reference.setTableId(table + partitionBy.fold("")(_.partitionSuffix(date))) -} diff --git a/bigquery/src/main/scala/com.mediative.amadou.bigquery/GoogleAuthentication.scala b/bigquery/src/main/scala/com.mediative.amadou.bigquery/GoogleAuthentication.scala deleted file mode 100644 index dedc302..0000000 --- a/bigquery/src/main/scala/com.mediative.amadou.bigquery/GoogleAuthentication.scala +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou.bigquery - -import java.io.{File, FileReader} -import scala.collection.JavaConversions._ -import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp -import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver -import com.google.api.client.googleapis.auth.oauth2.{ - GoogleAuthorizationCodeFlow, - GoogleClientSecrets -} -import com.google.api.client.http.{HttpRequest, HttpRequestInitializer} -import com.google.api.client.http.javanet.NetHttpTransport -import com.google.api.client.json.jackson2.JacksonFactory -import com.google.api.client.util.store.FileDataStoreFactory -import org.apache.spark.sql.SparkSession - -sealed abstract class GoogleAuthentication(val scopes: String*) - -object GoogleAuthentication { - lazy val HTTP_TRANSPORT = new NetHttpTransport() - lazy val JSON_FACTORY = new JacksonFactory() - - case object Dbm - extends GoogleAuthentication("https://www.googleapis.com/auth/doubleclickbidmanager") - - def apply(auth: GoogleAuthentication, spark: SparkSession): HttpRequestInitializer = auth match { - case Dbm => - val clientFilePath = spark.conf.get("spark.google.cloud.auth.client.file") - require(clientFilePath != null, "'google.cloud.auth.client.file' not configured") - - val clientFile = new File(clientFilePath) - require(clientFile.exists, s"$clientFilePath does not exists") - - val clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new FileReader(clientFile)) - val dataStoreFactory = new FileDataStoreFactory(clientFile.getParentFile) - - val flow = new GoogleAuthorizationCodeFlow.Builder( - HTTP_TRANSPORT, - JSON_FACTORY, - clientSecrets, - auth.scopes) - .setDataStoreFactory(dataStoreFactory) - .build() - - val cred = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()) - .authorize("user") - new CustomHttpRequestInitializer(cred) - } - - class CustomHttpRequestInitializer(wrapped: HttpRequestInitializer) - extends HttpRequestInitializer { - override def initialize(httpRequest: HttpRequest) = { - wrapped.initialize(httpRequest) - httpRequest.setConnectTimeout(10 * 60000) // 10 minutes connect timeout - httpRequest.setReadTimeout(10 * 60000) // 10 minutes read timeout - () - } - } -} diff --git a/bigquery/src/main/scala/com.mediative.amadou.bigquery/package.scala b/bigquery/src/main/scala/com.mediative.amadou.bigquery/package.scala deleted file mode 100644 index 1c6bcac..0000000 --- a/bigquery/src/main/scala/com.mediative.amadou.bigquery/package.scala +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import com.google.api.services.bigquery.model._ -import com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem -import com.google.cloud.hadoop.io.bigquery._ -import org.apache.hadoop.fs.{FileSystem, Path} -import net.ceedubs.ficus.readers.ValueReader -import net.ceedubs.ficus.FicusInstances - -import org.apache.spark.sql.{Dataset, SparkSession, Encoder} -import java.util.concurrent.ThreadLocalRandom -import scala.collection.JavaConversions._ - -package object bigquery extends FicusInstances { - - object CreateDisposition extends Enumeration { - val CREATE_IF_NEEDED, CREATE_NEVER = Value - } - - object WriteDisposition extends Enumeration { - val WRITE_TRUNCATE, WRITE_APPEND, WRITE_EMPTY = Value - } - - val BQ_CSV_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss zzz" - - object TableNotFound { - import com.google.api.client.googleapis.json.GoogleJsonResponseException - import com.google.api.client.googleapis.json.GoogleJsonError - import scala.collection.JavaConverters._ - - def unapply(error: Throwable): Option[GoogleJsonError.ErrorInfo] = error match { - case error: GoogleJsonResponseException => - Some(error.getDetails) - .filter(_.getCode == 404) - .flatMap(_.getErrors.asScala.find(_.getReason == "notFound")) - case _ => None - } - } - - def tableHasDataForDate( - spark: SparkSession, - table: TableReference, - date: java.sql.Date, - column: String): Boolean = { - val bq = BigQueryClient.getInstance(spark.sparkContext.hadoopConfiguration) - bq.hasDataForDate(table, date, column) - } - - /** - * Enhanced version of SparkSession with BigQuery support. - */ - implicit class BigQuerySparkSession(self: SparkSession) { - - val sc = self.sqlContext.sparkContext - val conf = sc.hadoopConfiguration - lazy val bq = BigQueryClient.getInstance(conf) - - // Register GCS implementation - if (conf.get("fs.gs.impl") == null) { - conf.set("fs.gs.impl", classOf[GoogleHadoopFileSystem].getName) - } - - /** - * Set GCP project ID for BigQuery. - */ - def setBigQueryProjectId(projectId: String): Unit = { - conf.set(BigQueryConfiguration.PROJECT_ID_KEY, projectId) - - // Also set project ID for GCS connector - if (conf.get("fs.gs.project.id") == null) { - conf.set("fs.gs.project.id", projectId) - } - } - - /** - * Set GCS bucket for temporary BigQuery files. - */ - def setBigQueryGcsBucket(gcsBucket: String): Unit = - conf.set(BigQueryConfiguration.GCS_BUCKET_KEY, gcsBucket) - - /** - * Set BigQuery dataset location, e.g. US, EU. - */ - def setBigQueryDatasetLocation(location: String): Unit = - conf.set(BigQueryClient.STAGING_DATASET_LOCATION, location) - - /** - * Set GCP JSON key file. - */ - def setGcpJsonKeyFile(jsonKeyFile: String): Unit = { - conf.set("mapred.bq.auth.service.account.json.keyfile", jsonKeyFile) - conf.set("fs.gs.auth.service.account.json.keyfile", jsonKeyFile) - } - - /** - * Set GCP pk12 key file. - */ - def setGcpPk12KeyFile(pk12KeyFile: String): Unit = { - conf.set("google.cloud.auth.service.account.keyfile", pk12KeyFile) - conf.set("mapred.bq.auth.service.account.keyfile", pk12KeyFile) - conf.set("fs.gs.auth.service.account.keyfile", pk12KeyFile) - } - - /** - * Reads a CSV extract of a BigQuery table. - */ - def readBigQueryCSVExtract[T: Encoder](url: String, dateFormat: String): Seq[T] = - self.read - .option("header", true) - .option("timestampFormat", dateFormat) - .option("escape", "\"") - .schema(implicitly[Encoder[T]].schema) - .csv(url) - .as[T] - .collect - .toSeq - - def readBigQueryCSVExtract[T: Encoder]( - url: HdfsUrl, - dateFormat: String = BQ_CSV_DATE_FORMAT): Seq[T] = - readBigQueryCSVExtract(url.toString, dateFormat) - } - - /** - * Enhanced version of DataFrame with BigQuery support. - */ - implicit class BigQueryDataset[T](self: Dataset[T]) { - - val sqlContext = self.sqlContext - val conf = sqlContext.sparkContext.hadoopConfiguration - val bq = BigQueryClient.getInstance(conf) - - /** - * Save a DataFrame to a BigQuery table. - */ - def saveAsBigQueryTable( - tableRef: TableReference, - writeDisposition: WriteDisposition.Value, - createDisposition: CreateDisposition.Value): Unit = { - val bucket = conf.get(BigQueryConfiguration.GCS_BUCKET_KEY) - val temp = - s"spark-bigquery-${System.currentTimeMillis()}=${ThreadLocalRandom.current.nextInt(Int.MaxValue)}" - val gcsPath = s"gs://$bucket/spark-bigquery-tmp/$temp" - self.write.json(gcsPath) - - val schemaFields = self.schema.fields.map { field => - import org.apache.spark.sql.types._ - - val fieldType = field.dataType match { - case BooleanType => "BOOLEAN" - case LongType => "INTEGER" - case IntegerType => "INTEGER" - case StringType => "STRING" - case DoubleType => "FLOAT" - case TimestampType => "TIMESTAMP" - case _: DecimalType => "INTEGER" - } - new TableFieldSchema().setName(field.name).setType(fieldType) - }.toList - - val tableSchema = new TableSchema().setFields(schemaFields) - - bq.load(gcsPath, tableRef, tableSchema, writeDisposition, createDisposition) - delete(new Path(gcsPath)) - } - - private def delete(path: Path): Unit = { - val fs = FileSystem.get(path.toUri, conf) - fs.delete(path, true) - () - } - - } - - implicit val valueReader: ValueReader[BigQueryTable.PartitionStrategy] = - ValueReader[String].map { - _ match { - case "month" => BigQueryTable.PartitionByMonth - case "day" => BigQueryTable.PartitionByDay - case other => sys.error(s"Unknown partition strategy") - } - } -} diff --git a/bin/scalafmt b/bin/scalafmt deleted file mode 100755 index 3de0a82..0000000 --- a/bin/scalafmt +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -# set -x - -HERE="`dirname $0`" -VERSION="1.1.0" -COURSIER="$HERE/.coursier" -SCALAFMT="$HERE/.scalafmt-$VERSION" - -if [ ! -f $COURSIER ]; then - curl -L -o $COURSIER https://git.io/vgvpD - chmod +x $COURSIER -fi - -if [ ! -f $SCALAFMT ]; then - $COURSIER bootstrap com.geirsson:scalafmt-cli_2.12:$VERSION --main org.scalafmt.cli.Cli -o $SCALAFMT - chmod +x $SCALAFMT -fi - -$SCALAFMT "$@" diff --git a/build.sbt b/build.sbt deleted file mode 100644 index 0ce2b3a..0000000 --- a/build.sbt +++ /dev/null @@ -1,106 +0,0 @@ -import com.typesafe.sbt.packager.docker.Cmd - -Jvm.`1.8`.required - -inThisBuild( - Def.settings( - organization := "com.mediative", - scalaVersion := "2.11.11", - scalacOptions += "-Ywarn-unused-import", - publishArtifact in (Compile, packageDoc) := false, - publishArtifact in (Compile, packageSrc) := false, - doctestTestFramework := DoctestTestFramework.ScalaTest, - doctestWithDependencies := false, - resolvers ++= Seq( - Resolver.bintrayRepo("mediative", "maven"), - Resolver.jcenterRepo - ), - envVars in Test ++= Map( - "AMADOU_RETRY_MAX" -> "1", - "SPARK_LOCAL_IP" -> "localhost" - ), - envVars in IntegrationTest ++= (envVars in Test).value - )) - -lazy val Versions = new { - val kafka = "0.8.2.2" - val spark = "2.1.1" - val sparkTestingBase = "2.1.0_0.6.0" // FIXME: when available s"${spark}_0.6.0" - val prometheus = "0.0.23" - val hadoop = "2.7.2" -} - -lazy val amadou = project - .in(file(".")) - .enablePlugins(MediativeGitHubPlugin, MediativeReleasePlugin) - .aggregate(base, testkit, core, bigquery, runtime) - .settings( - noPublishSettings, - postReleaseSteps ++= Seq(base, runtime).map(p => releaseStepTask(publish in Docker in p)) - ) - -val base = project - .enablePlugins(MediativeBintrayPlugin, MediativeDockerPlugin) - .settings( - name := "amadou-base", - dockerRepository := Some("mediative-docker-container-registry.bintray.io/amadou"), - packageName := "base", - libraryDependencies ++= Seq( - "com.iheart" %% "ficus" % "1.4.0", - "com.lihaoyi" %% "upickle" % "0.3.6", - "io.prometheus" % "simpleclient_common" % Versions.prometheus, - "io.prometheus" % "simpleclient_hotspot" % Versions.prometheus, - "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0", - "org.apache.spark" %% "spark-core" % Versions.spark, - "org.apache.spark" %% "spark-mllib" % Versions.spark, - "org.apache.spark" %% "spark-sql" % Versions.spark, - "org.apache.spark" %% "spark-hive" % Versions.spark, - "org.apache.hadoop" % "hadoop-aws" % Versions.hadoop - exclude ("joda-time", "joda-time"), - "joda-time" % "joda-time" % "2.9.7", // XXX: Use explicit joda-time dependency for AWS SDK - "org.apache.kafka" % "kafka-clients" % Versions.kafka - exclude ("org.slf4j", "slf4j-log4j12") - ) - ) - -val testkit = project - .enablePlugins(MediativeBintrayPlugin) - .dependsOn(base) - .settings( - name := "amadou-testkit", - libraryDependencies ++= Seq( - "com.holdenkarau" %% "spark-testing-base" % Versions.sparkTestingBase, - "org.apache.hadoop" % "hadoop-mapreduce-client-core" % Versions.hadoop force () - ) - ) - -val core = project - .enablePlugins(MediativeBintrayPlugin) - .dependsOn(base, testkit % Test) - .settings( - name := "amadou-core" - ) - -val bigquery = project - .enablePlugins(MediativeBintrayPlugin) - .dependsOn(core, testkit % Test) - .settings( - name := "amadou-bigquery", - libraryDependencies ++= Seq( - "com.google.cloud.bigdataoss" % "bigquery-connector" % "0.7.8-hadoop2" - exclude ("com.google.apis", "google-api-services-bigquery"), - "com.google.apis" % "google-api-services-bigquery" % "v2-rev320-1.22.0", - "com.google.oauth-client" % "google-oauth-client-jetty" % "1.20.0" - exclude ("org.mortbay.jetty", "servlet-api") - ) - ) - -val runtime = project - .enablePlugins(MediativeBintrayPlugin, MediativeDockerPlugin) - .dependsOn(core, bigquery) - .settings( - name := "amadou-runtime", - dockerBaseImage := (dockerAlias in base).value.versioned, - dockerRepository := Some("mediative-docker-container-registry.bintray.io/amadou"), - packageName := "runtime" - ) diff --git a/core/src/main/resources/log4j.properties b/core/src/main/resources/log4j.properties deleted file mode 100644 index 8cb5c8e..0000000 --- a/core/src/main/resources/log4j.properties +++ /dev/null @@ -1,13 +0,0 @@ -# Change this to set Spark log level -log4j.logger.org.apache.spark=WARN - -# Silence akka remoting -log4j.logger.Remoting=WARN -log4j.logger.akka=WARN - -# Silence verbose messages from Hadoop ecosystem -log4j.logger.org.apache.hadoop=ERROR -log4j.logger.org.apache.parquet=ERROR - -# Ignore messages below warning level from Jetty, because it's a bit verbose -log4j.logger.org.eclipse.jetty=WARN diff --git a/core/src/main/resources/reference.conf b/core/src/main/resources/reference.conf deleted file mode 100644 index 1bccda5..0000000 --- a/core/src/main/resources/reference.conf +++ /dev/null @@ -1,46 +0,0 @@ -deploy.environment = dev -deploy.environment = ${?DEPLOY_ENVIRONMENT} - -# Settings for retrying failed stage runs -retry { - # Delay between retries - delay = 20 minutes - delay = ${?AMADOU_RETRY_DELAY} - - # Maximum number of retries - max = 3 - max = ${?AMADOU_RETRY_MAX} -} - -# Example Slack configuration -#slack { -# url = "https://hooks.slack.com/services/CHANGE-ME" -# channel = CHANGE-ME -# user = CHANGE-ME -# icon = ":ghost:" -#} - -# Default settings for Kafka-based monitoring -kafka { - # Configure the servers to enable Kafka: - #bootstrap.servers = "host1:1234,host2:1234,host3:1234" - acks = "all" - retries = 0 - batch.size = 16384 - linger.ms = 1 - buffer.memory = 33554432 - key.serializer = "org.apache.kafka.common.serialization.StringSerializer" - value.serializer = "org.apache.kafka.common.serialization.StringSerializer" - topic.prefix = spark-etl-${deploy.environment} -} - -spark.master = "local[*]" -spark.logConf = true - -# AWS S3 Credentials -# -# If the AWS_CREDENTIALS environment variable is defined, credentials -# are read that file, however, they can also be overridden using -# environment variables. -spark.hadoop.fs.s3a.access.key = ${?AWS_ACCESS_KEY_ID} -spark.hadoop.fs.s3a.secret.key = ${?AWS_SECRET_ACCESS_KEY} diff --git a/core/src/main/scala/com.mediative.amadou/ConfigLoader.scala b/core/src/main/scala/com.mediative.amadou/ConfigLoader.scala deleted file mode 100644 index 707b020..0000000 --- a/core/src/main/scala/com.mediative.amadou/ConfigLoader.scala +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import net.ceedubs.ficus.{Ficus, FicusConfig, FicusInstances} -import net.ceedubs.ficus.readers.{ArbitraryTypeReader, ValueReader} -import java.util.Properties - -/** - * Mixin for loading and injecting values from configuration files. - */ -trait ConfigLoader extends ArbitraryTypeReader with FicusInstances { - implicit def toFicusConfig(config: Config): FicusConfig = Ficus.toFicusConfig(config) - - /** - * Value reader for optionally loading properties from a file. - * - * When the named path does not exists an empty Properties instance is returned - * - * @example - * {{{ - * case class Database(url: String, properties: Properties) - * }}} - */ - implicit val propertiesValueReader: ValueReader[Properties] = new ValueReader[Properties] { - def read(config: Config, path: String): Properties = { - val properties = new Properties() - for (path <- Option(path).filter(config.hasPath).map(config.getString)) - properties.load(new java.io.FileInputStream(path)) - properties - } - } -} diff --git a/core/src/main/scala/com.mediative.amadou/DatabaseUtils.scala b/core/src/main/scala/com.mediative.amadou/DatabaseUtils.scala deleted file mode 100644 index eb90621..0000000 --- a/core/src/main/scala/com.mediative.amadou/DatabaseUtils.scala +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import java.sql._ -import java.util.Properties - -object DatabaseUtils extends Logging { - - /** - * Run a sequence of database scripts. - */ - def runScripts(url: String, properties: Properties, scripts: String*): Unit = - for { - connection <- ManagedIO(DriverManager.getConnection(url, properties)) - statement <- ManagedIO(connection.createStatement) - sql <- scripts - } { - logger.info(s"Executing SQL script in ${url}: $sql") - statement.executeUpdate(sql) - } -} diff --git a/core/src/main/scala/com.mediative.amadou/DateInterval.scala b/core/src/main/scala/com.mediative.amadou/DateInterval.scala deleted file mode 100644 index 83d7363..0000000 --- a/core/src/main/scala/com.mediative.amadou/DateInterval.scala +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import java.sql.{Date, Timestamp} -import java.text.SimpleDateFormat -import java.util.{Calendar, TimeZone} - -import scala.util.Try - -/** - * Base class for date intervals. - * - * The interval is represented as the half open range between `from` and `to`. - * For instance, May 2014 is represented as `from = 2014-05-01`, `to = 2014-06-01`. - * - * Example: - * {{{ - * scala> Seq(Day(2016, 8, 11), Week(2016, 32), Month(2016, 8), Quarter(2016, Quarter.Q3), Year(2016)) - * res1: Seq[DateInterval] = List(2016-08-11, 2016-W32, 2016-08, 2016-Q3, 2016) - * }}} - */ -sealed abstract class DateInterval( - val from: Long, - val interval: DateIntervalType, - val toOpt: Option[DateInterval] = None) - extends Ordered[DateInterval] { - - def end = toOpt.getOrElse(next) - - /** - * Define a custom interval. - * - * Example: - * {{{ - * scala> Month(2016, 8) to Day(2016, 8, 29) - * res1: DateInterval = 2016-08:2016-08-29 - * scala> (Day(2016, 8, 11) to Day(2016, 8, 29)).by(Day).size - * res2: Int = 18 - * }}} - */ - def to(other: DateInterval): DateInterval = - if (toOpt.forall(_ < other)) - interval.newBuilder.from(from).to(other).build - else - this - - def +(delta: Int): DateInterval = interval.newBuilder.from(from).add(delta).build - def -(delta: Int): DateInterval = this.+(-delta) - - override def equals(other: Any): Boolean = other match { - case that: DateInterval => - interval == that.interval && toOpt == that.toOpt && compare(that) == 0 - case _ => false - } - - override def compare(that: DateInterval) = from.compareTo(that.from) - - override def toString = - interval.defaultFormatter.format(asDate) + toOpt.fold("")(":" + _.toString) - - def format(dateFormat: String): String = { - val formatter = interval.formatter(dateFormat) - formatter.format(asDate) + toOpt.fold("")(":" + _.toString) - } - - def asDate = new Date(from) - def asTimestamp = new Timestamp(from) - - def contains(date: DateInterval): Boolean = - this <= date && date < end - - /** - * Iterate over all days in this date interval. - * - * Example: - * {{{ - * scala> Week(2016, 11).by(Day).size - * res1: Int = 7 - * scala> Week(2016, 11).by(Day).toList - * res2: List[DateInterval] = List(2016-03-14, 2016-03-15, 2016-03-16, 2016-03-17, 2016-03-18, 2016-03-19, 2016-03-20) - * }}} - */ - def by(interval: DateIntervalType): Traversable[DateInterval] = { - var d = interval.apply(this) - - Stream.iterate(d)(_.next).takeWhile(_.from < end.from) - } - - /** - * Returns the preceding corresponding date interval (eg. May -> April). - * - * Example: - * {{{ - * scala> Month(2016, 5).prev - * res1: DateInterval = 2016-04 - * }}} - */ - def prev: DateInterval = this - 1 - - /** - * Returns the subsequent corresponding date interval (eg. 2014 -> 2015). - * - * Example: - * {{{ - * scala> Year(2014).next - * res1: DateInterval = 2015 - * }}} - */ - def next: DateInterval = this + 1 -} - -object DateInterval { - val UTC = TimeZone.getTimeZone("UTC") -} - -/** - * Base class for specific date intervals - */ -sealed abstract class DateIntervalType(val calendarField: Int, val dateFormat: String) { - - /** - * Create a date interval with a different type and truncate lower - * resolution date fields accordingly. - * - * Example: - * {{{ - * scala> Day(1431000000000L) - * res1: DateInterval = 2015-05-07 - * scala> Week(Day(1431000000000L)) - * res2: DateInterval = 2015-W19 - * scala> Month(Day(1431000000000L)) - * res3: DateInterval = 2015-05 - * scala> Quarter(1431000000000L) - * res4: DateInterval = 2015-Q2 - * scala> Year(Day(1431000000000L)) - * res5: DateInterval = 2015 - * scala> Year(Day(1431000000000L)).format("yyyy-MM-dd HH:mm ZZ") - * res6: String = 2015-01-01 00:00 +0000 - * }}} - */ - def apply(date: DateInterval): DateInterval = - apply(date.from) - - /** - * Represent the interval for a given timestamp using the specified - * interval type. - * - * This will truncate lower resolution date fields to their initial - * value, for example for months the day of month field is set to 1. - * - * Example: - * {{{ - * scala> Day(1431000000000L).format("yyyy-MM-dd HH:mm ZZ") - * res1: String = 2015-05-07 00:00 +0000 - * scala> Month(1431000000000L).format("yyyy-MM-dd HH:mm ZZ") - * res2: String = 2015-05-01 00:00 +0000 - * scala> Year(1431000000000L).format("yyyy-MM-dd HH:mm ZZ") - * res3: String = 2015-01-01 00:00 +0000 - * }}} - */ - def apply(timestamp: Long): DateInterval = - newBuilder.from(timestamp).build - - /** - * Represent the interval for today using the specified interval type. - * - * This will truncate lower resolution date fields to their initial - * value, for example for months the day of month field is set to 1. - */ - def today = apply(System.currentTimeMillis()) - - /** - * Parse a timestamp into a date interval. - * - * Example: - * {{{ - * scala> Day.parse("2015-05-07") - * res1: Option[DateInterval] = Some(2015-05-07) - * scala> Day.parse("2015-05-07").get.format("yyyy-MM-dd HH:mm ZZ") - * res2: String = 2015-05-07 00:00 +0000 - * }}} - */ - def parse(input: String): Option[DateInterval] = - Try(defaultFormatter.parse(input)).map(date => newBuilder.from(date.getTime).build).toOption - - private[amadou] def formatter(pattern: String = dateFormat): SimpleDateFormat = { - val dateFormat = new SimpleDateFormat(pattern) - dateFormat.setCalendar(Builder.newCalendar) - dateFormat - } - - private[amadou] def defaultFormatter: SimpleDateFormat = - formatter(dateFormat) - - private[amadou] def newBuilder(): Builder = - new Builder() - - private class Instance(from: Long, toOpt: Option[DateInterval]) - extends DateInterval(from, DateIntervalType.this, toOpt) - - private[amadou] case class Builder(from: Long = 0, toOpt: Option[DateInterval] = None) { - def update(f: Calendar => Unit): Builder = { - val cal = Builder.newCalendar - cal.setTimeInMillis(from) - f(cal) - copy(from = cal.getTimeInMillis) - } - - def from(date: DateInterval): Builder = copy(from = date.from) - def from(timestamp: Long): Builder = copy(from = timestamp) - def to(date: DateInterval): Builder = copy(toOpt = Some(date)) - - def add(delta: Int): Builder = - DateIntervalType.this match { - case Quarter => update(_.add(calendarField, delta * 3)) - case _ => update(_.add(calendarField, delta)) - } - - def set(year: Int, month: Int = 1, day: Int = 1): Builder = { - require(1 <= month && month <= 12, "month must be between 1-12") - update(_.set(year, month - 1, day)) - } - - def build(): DateInterval = { - val cal = Builder.newCalendar - cal.setTimeInMillis(from) - val truncated = Builder.newCalendar - DateIntervalType.this match { - case Week => - truncated.setWeekDate(cal.getWeekYear(), cal.get(Calendar.WEEK_OF_YEAR), Week.Monday.id) - - case Quarter => - truncated.set(cal.get(Calendar.YEAR), (cal.get(Calendar.MONTH) / 3) * 3, 1) - - case _ => - Seq(Calendar.DAY_OF_MONTH, Calendar.MONTH, Calendar.YEAR) - .dropWhile(_ != calendarField) - .reverse - .foreach(field => truncated.set(field, cal.get(field))) - } - - new Instance(truncated.getTimeInMillis, toOpt) - } - } - - object Builder { - def newCalendar: Calendar = { - val cal = Calendar.getInstance(DateInterval.UTC) - cal.clear() - cal.setLenient(false) - /* - * Configure the calendar for ISO 8601 standard compatible settings: - * http://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#week_and_year - */ - cal.setFirstDayOfWeek(Week.Monday.id) - cal.setMinimalDaysInFirstWeek(4) - cal.setTimeZone(DateInterval.UTC) - cal - } - } -} - -object Day extends DateIntervalType(Calendar.DAY_OF_MONTH, "yyyy-MM-dd") { - def apply(year: Int, month: Int, day: Int): DateInterval = - newBuilder.set(year, month, day).build -} - -/** - * ISO 8601 week. Note that it has some counterintuitive behavior around new year. - * For instance Monday 29 December 2008 is week 2009-W01, and Sunday 3 January 2010 is week 2009-W53-7 - * This example was taken from from http://en.wikipedia.org/wiki/ISO_8601#Week_dates: - * {{{ - * scala> Week(Day(2008, 12, 29)) - * res1: DateInterval = 2009-W01 - * scala> Week(Day(2010, 1, 3)) - * res2: DateInterval = 2009-W53 - * scala> Week(2009, 53, dayOfWeek = Week.Sunday).by(Day).last - * res3: DateInterval = 2010-01-03 - * }}} - */ -object Week extends DateIntervalType(Calendar.WEEK_OF_YEAR, "YYYY-'W'ww") { - sealed trait WeekDay { - def id: Int - } - case object Monday extends WeekDay { val id = Calendar.MONDAY } - case object Tuesday extends WeekDay { val id = Calendar.TUESDAY } - case object Wednesday extends WeekDay { val id = Calendar.WEDNESDAY } - case object Thursday extends WeekDay { val id = Calendar.THURSDAY } - case object Friday extends WeekDay { val id = Calendar.FRIDAY } - case object Saturday extends WeekDay { val id = Calendar.SATURDAY } - case object Sunday extends WeekDay { val id = Calendar.SUNDAY } - - def apply(year: Int, week: Int, dayOfWeek: WeekDay = Monday): DateInterval = { - require(1 <= week && week <= 53, "week must be between 1-53") - newBuilder.update(_.setWeekDate(year, week, dayOfWeek.id)).build - } -} - -object Month extends DateIntervalType(Calendar.MONTH, "yyyy-MM") { - def apply(year: Int, month: Int): DateInterval = newBuilder.set(year, month).build -} - -sealed abstract class Quarter(val month: Int) - -/** - * Quarters of the year. - * - * {{{ - * scala> Quarter(2017, Quarter.Q1) - * res1: DateInterval = 2017-Q1 - * scala> Year(2017).by(Quarter).toList - * res2: List[DateInterval] = List(2017-Q1, 2017-Q2, 2017-Q3, 2017-Q4) - * scala> Quarter(2017, Quarter.Q1).by(Month).toList - * res3: List[DateInterval] = List(2017-01, 2017-02, 2017-03) - * scala> Quarter.parse("2008-Q4") - * res4: Option[DateInterval] = Some(2008-Q4) - * scala> Quarter(2017, Quarter.Q2).format("yyyy-MM-dd") - * res5: String = 2017-04-01 - * }}} - */ -object Quarter extends DateIntervalType(Calendar.MONTH, "yyyy-MMM") { - case object Q1 extends Quarter(month = 1) - case object Q2 extends Quarter(month = 4) - case object Q3 extends Quarter(month = 7) - case object Q4 extends Quarter(month = 10) - - private val MonthSymbols = Array(Q1, Q2, Q3, Q4).flatMap(q => Array.fill(3)(q.toString)) - private def dateFormatSymbols = new java.text.DateFormatSymbols() { - setMonths(MonthSymbols) - setShortMonths(MonthSymbols) - } - - override private[amadou] def defaultFormatter: SimpleDateFormat = { - val format = super.formatter(dateFormat) - format.setDateFormatSymbols(dateFormatSymbols) - format - } - - def apply(year: Int, quarter: Quarter): DateInterval = - newBuilder.set(year, quarter.month).build -} - -object Year extends DateIntervalType(Calendar.YEAR, "yyyy") { - def apply(year: Int): DateInterval = newBuilder.set(year).build -} diff --git a/core/src/main/scala/com.mediative.amadou/HdfsUrl.scala b/core/src/main/scala/com.mediative.amadou/HdfsUrl.scala deleted file mode 100644 index 3bc11f6..0000000 --- a/core/src/main/scala/com.mediative.amadou/HdfsUrl.scala +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.apache.hadoop.fs.{Path, FSDataOutputStream} -import org.apache.spark.sql.SparkSession - -/** - * Utility class for working with HDFS URLs. - * - * It allows to customize how dates are formatted and then - * {{{ - * scala> HdfsUrl("some/path") / "somewhere" / Day(2016, 8, 28) - * res1: HdfsUrl = some/path/somewhere/2016-08-28 - * scala> HdfsUrl("root", dateFormat = Some("'year='yyyy/'month'=MM")) / Day(2016, 8, 28) - * res2: HdfsUrl = root/year=2016/month=08 - * }}} - */ -case class HdfsUrl(url: String, dateFormat: Option[String] = None) { - def path = new Path(url) - - def /(subPath: String): HdfsUrl = - copy(url = new Path(path, subPath).toString) - - def /(date: DateInterval): HdfsUrl = { - val datePath = dateFormat.fold(date.toString)(date.format) - this./(datePath) - } - - def exists(spark: SparkSession) = fileSystem(spark).exists(path) - - def open[T](spark: SparkSession)(f: FSDataOutputStream => T): T = { - val stream = fileSystem(spark).create(path) - try { - f(stream) - } finally { - stream.close() - } - } - - def fileSystem(spark: SparkSession) = - path.getFileSystem(spark.sparkContext.hadoopConfiguration) - - override def toString = path.toString -} diff --git a/core/src/main/scala/com.mediative.amadou/Logging.scala b/core/src/main/scala/com.mediative.amadou/Logging.scala deleted file mode 100644 index 98ca639..0000000 --- a/core/src/main/scala/com.mediative.amadou/Logging.scala +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import com.typesafe.scalalogging.LazyLogging - -trait Logging extends LazyLogging diff --git a/core/src/main/scala/com.mediative.amadou/ManagedIO.scala b/core/src/main/scala/com.mediative.amadou/ManagedIO.scala deleted file mode 100644 index 404a6ca..0000000 --- a/core/src/main/scala/com.mediative.amadou/ManagedIO.scala +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import scala.util.Try - -/** - * Manage auto closeable resources. - */ -case class ManagedIO[T <: AutoCloseable](t: Try[T]) { - def flatMap[U <: AutoCloseable](f: T => ManagedIO[U]): ManagedIO[U] = run(f) - def map[U](f: T => U): U = run(f) - def foreach(f: T => Unit): Unit = run(f) - - private def run[U](f: T => U): U = { - val result = t.flatMap(v => Try(f(v))) - val close = t.flatMap(v => Try(v.close)) - if (result.isSuccess) - close.get - result.get - } -} - -object ManagedIO { - def apply[T <: AutoCloseable](open: => T): ManagedIO[T] = - ManagedIO(Try(open)) -} diff --git a/core/src/main/scala/com.mediative.amadou/Schedule.scala b/core/src/main/scala/com.mediative.amadou/Schedule.scala deleted file mode 100644 index 6685f9f..0000000 --- a/core/src/main/scala/com.mediative.amadou/Schedule.scala +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -/** - * Mixin providing a DSL for defining schedules. - * - * If for example, we want to run a report against a cumulative data source - * each day and must ensure that it runs the first of every month to generate - * a report for all of the previous month. This schedule can be defined as: - * - * {{{ - * val schedule = today and monthly - * }}} - * - * If we are only interested in "backfilling" jobs from a specific date use - * a `where` clause, e.g.: - * - * {{{ - * val schedule = daily where (_ >= Date(2016, 4, 12) - * }}} - */ -trait ScheduleDsl { - def today = Schedule(Day.today) - def daily = Schedule.iterate(Day.today) - def monthly = Schedule.iterate(Month.today) - def quarterly = Schedule.iterate(Quarter.today) - def yearly = Schedule.iterate(Year.today) -} - -/** - * A schedule is a sequence of monotonic decreasing dates. It can be - * composed with other schedules to form more complex execution plans. - * - * Generating a list of days for a daily schedule: - * {{{ - * scala> Schedule.iterate(Day(2016, 7, 2)).take(3).toList - * res2: List[DateInterval] = List(2016-07-02, 2016-07-01, 2016-06-30) - * }}} - * - * Generate a list of days for a monthly schedule: - * {{{ - * scala> Schedule.iterate(Month(2016, 3)).where(Year(2016).<=).toList - * res1: List[DateInterval] = List(2016-03, 2016-02, 2016-01) - * }}} - */ -case class Schedule(dates: Stream[DateInterval]) extends Traversable[DateInterval] { - override final def foreach[U](f: DateInterval => U): Unit = { - @scala.annotation.tailrec - def ensureMonotonicDecreasingOrder(stream: Stream[DateInterval]): Unit = - if (stream.nonEmpty) { - val head = stream.head - f(head) - val tail = stream.tail.dropWhile(_ >= head) - ensureMonotonicDecreasingOrder(tail) - } - - ensureMonotonicDecreasingOrder(dates) - } - - /** - * Combine two date streams. - */ - def and(that: Schedule): Schedule = Schedule(dates #::: that.dates) - - /** - * Only includes dates newer than a given date. - */ - def where(predicate: DateInterval => Boolean): Schedule = Schedule(dates.takeWhile(predicate)) -} - -object Schedule { - val empty = Schedule(Stream.empty[DateInterval]) - def apply(date: DateInterval): Schedule = Schedule(Stream(date)) - def iterate(interval: DateInterval): Schedule = - Schedule(Stream.iterate(interval)(_.prev)) -} diff --git a/core/src/main/scala/com.mediative.amadou/Schema.scala b/core/src/main/scala/com.mediative.amadou/Schema.scala deleted file mode 100644 index d8958bd..0000000 --- a/core/src/main/scala/com.mediative.amadou/Schema.scala +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import scala.reflect.runtime.universe.TypeTag -import org.apache.spark.sql.{Encoder, Encoders} - -/** - * Marker trait for case classes to automatically provide a Spark - * encoder. - */ -object Schema { - implicit def encoder[T <: Product: TypeTag]: Encoder[T] = Encoders.product[T] -} diff --git a/core/src/main/scala/com.mediative.amadou/Slack.scala b/core/src/main/scala/com.mediative.amadou/Slack.scala deleted file mode 100644 index ceb984b..0000000 --- a/core/src/main/scala/com.mediative.amadou/Slack.scala +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.apache.http.client.methods.HttpPost -import org.apache.http.entity.{ContentType, StringEntity} -import org.apache.http.impl.client.HttpClients -import org.json4s.NoTypeHints -import org.json4s.jackson.Serialization -import org.json4s.jackson.Serialization.{write} - -object Slack { - case class PostException(msg: String) extends RuntimeException(msg) - - case class Payload( - channel: String, - text: String, - username: String, - icon_emoji: String, - link_names: Boolean) -} - -/** - * Wrap the functionality to send messages to a Slack channel. - */ -case class Slack(url: String, channel: String, user: String, icon: String) extends Logging { - import Slack._ - - implicit val formats = Serialization.formats(NoTypeHints) - - /** - * Post the given message to a Slack channel. - * - * @param message the text of the message to send. - * @param icon optional icon for the message. - */ - def post(message: String, icon: String = this.icon): Unit = { - val payload = Payload(channel, message, user, icon, true) - logger.info(s"Posting $payload to $url") - - val client = HttpClients.createDefault() - val requestEntity = new StringEntity(write(payload), ContentType.APPLICATION_JSON) - val postMethod = new HttpPost(url) - postMethod.setEntity(requestEntity) - - val response = client.execute(postMethod) - client.close() - val status = response.getStatusLine - if (status.getStatusCode != 200) - throw PostException( - s"$url replied with status ${status.getStatusCode}: ${status.getReasonPhrase}") - } -} diff --git a/core/src/main/scala/com.mediative.amadou/SparkJob.scala b/core/src/main/scala/com.mediative.amadou/SparkJob.scala deleted file mode 100644 index c739659..0000000 --- a/core/src/main/scala/com.mediative.amadou/SparkJob.scala +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.apache.spark.sql._ - -object SparkJob { - - /** - * Maximum number of dates considered from a schedule. - */ - val MaxScheduledDates = 60 -} - -/** - * A Spark ETL job - * - * Jobs have a schedule of dates which is filtered using job specific - * logic and run in chronological order. For example, for jobs which run - * each day and at end of month, we check if it ran correctly "today" - * and if not we traverse if it ran for previous "month's end" etc., - * until we find a completed run or we have traversed some magical max - * number. - * - * The schedule can be overridden by defining the `start` environment - * variable with a date formatted as "yyyy-MM-dd". In this case the job - * is only run the the specified date. - */ -trait SparkJob extends Logging { - def shouldRunForDate(spark: SparkSession, date: DateInterval): Boolean - def stages: Stage[SparkSession, _] -} diff --git a/core/src/main/scala/com.mediative.amadou/SparkRunner.scala b/core/src/main/scala/com.mediative.amadou/SparkRunner.scala deleted file mode 100644 index 95a3d92..0000000 --- a/core/src/main/scala/com.mediative.amadou/SparkRunner.scala +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import scala.collection.JavaConversions._ -import scala.concurrent.duration._ -import scala.util.{Failure, Success, Try} -import com.typesafe.config._ -import org.apache.spark.SparkConf -import org.apache.spark.sql.SparkSession -import org.apache.spark.scheduler.{SparkListener, SparkListenerTaskEnd} -import com.amazonaws.auth.profile.ProfilesConfigFile -import io.prometheus.client._ - -import monitoring.MessagingSystem - -case class RetryOptions(delay: FiniteDuration, max: Int) - -abstract class SparkRunner[Job <: SparkJob] extends Logging with ScheduleDsl with ConfigLoader { - def jobName: String - def schedule: Schedule - def createJob(config: Config): Job - def recordsProcessed: Collector = sparkRecordsRead - - def main(args: Array[String]): Unit = - Try(run) match { - case Failure(failure) => - // Manual print error to not depend on any logger - System.err.println("Spark job failed") - failure.printStackTrace(System.err) - System.exit(1) - case _ => - System.exit(0) - } - - def run(): Unit = { - val config = - sys.env - .get("DEPLOY_ENVIRONMENT") - .fold(ConfigFactory.empty) { env => - ConfigFactory.defaultOverrides().withFallback(ConfigFactory.load(env)) - } - .withFallback(ConfigFactory.load()) - - val messaging = MessagingSystem.create(config) - val retryOptions = config.as[RetryOptions]("retry") - - val singleDate = sys.env.get("start").flatMap(Day.parse) - val job = createJob(config) - val sparkConfig = new SparkConf().setAppName(jobName) - - for { - setting <- config.entrySet.toSeq - if setting.getKey.startsWith("spark.") - // `.getString` does not support LIST types - if setting.getValue.valueType != ConfigValueType.LIST - // Ensure the key path is unquoted - key = ConfigUtil.splitPath(setting.getKey).mkString(".") - } yield sparkConfig.setIfMissing(key, config.getString(setting.getKey)) - - val spark = SparkSession.builder - .config(sparkConfig) - .getOrCreate() - - /* - * XXX: Add S3 credentials after creating the Spark session so they are - * not logged. - */ - sys.env.get("AWS_CREDENTIALS").foreach { file => - val creds = new ProfilesConfigFile(file).getCredentials("default") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.access.key", creds.getAWSAccessKeyId) - spark.sparkContext.hadoopConfiguration.set("fs.s3a.secret.key", creds.getAWSSecretKey) - } - - spark.sparkContext.addSparkListener(sparkListener) - - val shouldRunForDate: DateInterval => Boolean = singleDate match { - case Some(date) => date.<= - case None => job.shouldRunForDate(spark, _) - } - - val dates = schedule - .take(SparkJob.MaxScheduledDates) - .takeWhile(shouldRunForDate) - .toList - .reverse - - logger.info(s"Scheduled dates are: $dates") - dates.foreach { date => - val ctx = new Context(jobName, date, job, retryOptions, spark, messaging, spark) - - messaging.publishProcessStarting(ctx) - job.stages.run(ctx) - messaging.publishProcessComplete(ctx) - } - - messaging.stop() - spark.stop() - } - - class Context[+I]( - val jobId: String, - val eventDate: DateInterval, - job: Job, - retryOptions: RetryOptions, - spark: SparkSession, - messaging: MessagingSystem, - value: I) - extends Stage.Context(spark, eventDate, value) - with MessagingSystem.Context { - - override def withValue[U](value: U) = - new Context(jobId, eventDate, job, retryOptions, spark, messaging, value) - - override def run[T](stage: Stage[I, T], result: => T): Stage.Result[T] = { - def runStage(callCount: Int): Stage.Result[T] = { - val stageId = s"$jobName/$eventDate/$processId/${stage.name}" - logger.info(s"[$stageId] Running stage ${stage.name} try #$callCount") - counters.foreach(_.clear()) - messaging.publishStageStarting(this, stage.name) - Try(result) match { - case v @ Success(_) => - messaging.publishStageComplete(this, stage.name) - messaging.publishMetrics(this, stage.name, collectMetrics()) - v - case Failure(failure) => - if (callCount >= retryOptions.max) { - logger.error(s"[$stageId] Giving up after ${retryOptions.max} retries", failure) - messaging.publishStageFailed(this, stage.name, failure) - messaging.publishProcessFailed(this, failure) - throw failure - } else { - logger.error( - s"[$stageId] Will retry stage ${stage.name} in ${retryOptions.delay}", - failure) - messaging.publishStageRetrying(this, stage.name) - Thread.sleep(retryOptions.delay.toMillis) - runStage(callCount + 1) - } - } - } - - runStage(1) - } - } - - /* - * Metrics management - */ - - private val counters = scala.collection.mutable.ArrayBuffer[Counter]() - - /** - * Counters will be reset before each job run. - */ - protected def counter(name: String, help: String, labels: String*): Counter = { - val collector = Counter.build().name(name).labelNames(labels: _*).help(help).register() - counters += collector - collector - } - - protected def gauge(name: String, help: String, labels: String*): Gauge = - Gauge.build().name(name).labelNames(labels: _*).help(help).register() - - private def collectMetrics(): Map[String, Double] = { - def labeledSamples(sample: Collector.MetricFamilySamples.Sample) = - for { - (label, labelValue) <- sample.labelNames.toSeq.zip(sample.labelValues.toSeq) - value <- Try(labelValue.toDouble).toOption - } yield s"${sample.name}_$label" -> value - - val metrics = for { - family <- CollectorRegistry.defaultRegistry.metricFamilySamples() - sample <- family.samples - metric <- labeledSamples(sample) :+ (sample.name -> sample.value) - } yield metric - - val recordsProcessedMetrics = for { - family <- recordsProcessed.collect - sample <- family.samples - } yield ("recordsProcessed" -> sample.value) - - metrics.toMap ++ recordsProcessedMetrics.headOption - } - - hotspot.DefaultExports.initialize() - - private lazy val sparkBytesRead = counter("spark_bytes_read", "Number of bytes read.") - private lazy val sparkRecordsRead = counter("spark_records_read", "Number of records read.") - private lazy val sparkRecordsWritten = - counter("spark_records_written", "Number of records written.") - - private def sparkListener() = - new SparkListener() { - override def onTaskEnd(taskEnd: SparkListenerTaskEnd): Unit = { - sparkBytesRead.inc(taskEnd.taskMetrics.inputMetrics.bytesRead) - sparkRecordsRead.inc(taskEnd.taskMetrics.inputMetrics.recordsRead) - // FIXME: This seems to always be 0L. Look into using information from - // `taskEnd.taskInfo.accumulables` and/or `taskEnd.taskMetrics.shuffleWriteMetrics.recordsWritten` - sparkRecordsWritten.inc(taskEnd.taskMetrics.outputMetrics.recordsWritten) - } - } -} diff --git a/core/src/main/scala/com.mediative.amadou/Stage.scala b/core/src/main/scala/com.mediative.amadou/Stage.scala deleted file mode 100644 index 989ac36..0000000 --- a/core/src/main/scala/com.mediative.amadou/Stage.scala +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.apache.spark.sql._ -import scala.util.{Failure, Success, Try} - -sealed trait Stage[-I, +T] { self => - def name: String - - def map[U](f: T => U): Stage[I, U] = new Stage[I, U] { - override def name = self.name - override def run(ctx: Stage.Context[I]): Stage.Result[U] = self.run(ctx).map(f) - } - - def flatMap[U](f: T => Stage[T, U]): Stage[I, U] = new Stage[I, U] { - override def name = self.name - override def run(ctx: Stage.Context[I]): Stage.Result[U] = - self.run(ctx).flatMap(data => f(data).run(ctx.withValue(data))) - } - - def andThen[U](s: Stage[T, U]): Stage[I, U] = flatMap(_ => s) - def ~>[U](s: Stage[T, U]): Stage[I, U] = andThen(s) - - def run(ctx: Stage.Context[I]): Stage.Result[T] -} - -object Stage { - type Result[A] = Try[A] - - abstract class Context[+I](val spark: SparkSession, val date: DateInterval, val value: I) { - def withValue[U](value: U): Context[U] - def run[T](stage: Stage[I, T], result: => T): Result[T] = Try(result) - } - - object Context { - def apply(spark: SparkSession, date: DateInterval): Context[SparkSession] = - new SimpleContext(spark, date, spark) - } - - class SimpleContext[+I](spark: SparkSession, date: DateInterval, value: I) - extends Context[I](spark, date, value) { - override def withValue[U](value: U) = new SimpleContext(spark, date, value) - } - - def apply[S, T](stageName: String)(f: Stage.Context[S] => T): Stage[S, T] = new Stage[S, T] { - override def name = stageName - override def run(ctx: Stage.Context[S]) = ctx.run(this, f(ctx)) - } - - /** - * Read data from a data source. - * - * May be used anywhere in a for-expression to read from a data source. - */ - def source[T](name: String)(read: Stage.Context[SparkSession] => Dataset[T]) = - Stage(name) { ctx: Stage.Context[_] => - read(ctx.withValue(ctx.spark)) - } - - def transform[S, T](name: String)(transform: Stage.Context[Dataset[S]] => Dataset[T]) = - Stage(name)(transform) - - def sink[T](name: String)(write: Stage.Context[Dataset[T]] => Unit) = - Stage(name)((ctx: Stage.Context[Dataset[T]]) => { write(ctx); ctx.value }) - - def sequence[S, T](stages: Seq[Stage[S, T]]): Stage[S, Seq[T]] = new Stage[S, Seq[T]] { - override def name = "sequence" - override def run(ctx: Stage.Context[S]): Stage.Result[Seq[T]] = { - @scala.annotation.tailrec - def iterate(stages: Seq[Stage[S, T]], results: Seq[T]): Stage.Result[Seq[T]] = - stages match { - case Seq() => Success(results) - case Seq(stage, rest @ _*) => - stage.run(ctx) match { - case Success(result) => iterate(rest, results :+ result) - case Failure(exception) => Failure(exception) - } - } - - iterate(stages, Seq.empty) - } - } - - case class SequenceAllException[S, T](failures: Seq[(Stage[S, T], Throwable)]) extends Exception { - override def getMessage = - failures - .map { - case (stage, failure) => - s"${stage.name} failed: (${failure.getClass.getName}) ${failure.getMessage}" - } - .mkString(s"${failures.size} stage(s) failed:\n - ", "\n - ", "") - } - - /** - * Combine multiple stages into a single stage which fails if any of them results - * in a failure. - */ - def sequenceAll[S, T](stages: Seq[Stage[S, T]]): Stage[S, Seq[T]] = new Stage[S, Seq[T]] { - override def name = "sequenceAll" - override def run(ctx: Stage.Context[S]): Stage.Result[Seq[T]] = { - val results: Seq[(Stage[S, T], Stage.Result[T])] = - stages.map(stage => stage -> stage.run(ctx)) - results.filter(_._2.isFailure) match { - case Seq() => Success(results.map(_._2.get)) - case failures => - Failure(SequenceAllException(failures.map { - case (stage, result) => stage -> result.failed.get - })) - } - } - } - - def identity[T] = new Stage[T, T] { self => - override def name = "identity" - - override def flatMap[U](f: T => Stage[T, U]): Stage[T, U] = new Stage[T, U] { - override def name = self.name - override def run(ctx: Stage.Context[T]): Stage.Result[U] = - Try(f(ctx.value)).flatMap(stage => stage.run(ctx)) - } - - override def run(ctx: Stage.Context[T]) = ctx.run(this, ctx.value) - } -} diff --git a/core/src/main/scala/com.mediative.amadou/monitoring/Events.scala b/core/src/main/scala/com.mediative.amadou/monitoring/Events.scala deleted file mode 100644 index b8dced3..0000000 --- a/core/src/main/scala/com.mediative.amadou/monitoring/Events.scala +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou -package monitoring - -/** - * Process and stage states registry. - */ -sealed trait StateRecord { - def identifier = toString -} - -case object Processing extends StateRecord -case object Retrying extends StateRecord -case object Failed extends StateRecord -case object Complete extends StateRecord - -case class MetricsEvent( - jobId: String, - processId: String, - stage: String, - timestamp: Long, - message: Map[String, Double]) - -case class RunEvent( - jobId: String, - processId: String, - state: String, - processingDate: String, - timestamp: Long, - duration: Long, - message: String) - -case class StageEvent( - jobId: String, - processId: String, - stage: String, - state: String, - timestamp: Long, - duration: Long, - message: String) diff --git a/core/src/main/scala/com.mediative.amadou/monitoring/KafkaMessagingSystem.scala b/core/src/main/scala/com.mediative.amadou/monitoring/KafkaMessagingSystem.scala deleted file mode 100644 index d51cd79..0000000 --- a/core/src/main/scala/com.mediative.amadou/monitoring/KafkaMessagingSystem.scala +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou -package monitoring - -import java.util.Properties -import com.typesafe.config.Config -import org.apache.kafka.clients.producer.{Callback, KafkaProducer, ProducerRecord, RecordMetadata} - -class KafkaMessagingSystem(config: Config) extends MessagingSystem with Logging { - private val properties = KafkaMessagingSystem.readProperties(config) - private val producer = new KafkaProducer[String, String](properties) - private val topicPrefix = properties.getProperty("topic.prefix") - - override def publish(topic: String, message: String): Unit = { - val topicName = s"$topicPrefix-$topic" - - logger.info(s"Publishing to $topicName :\n$message\n") - - producer.send(new ProducerRecord[String, String](topicName, message), new Callback { - override def onCompletion(metadata: RecordMetadata, exception: Exception): Unit = - if (exception != null) { - logger - .error(s"Cannot publish to $topicName. Caused by: ${exception.getMessage}", exception) - } - }) - () - } - - override def stop(): Unit = - producer.close() -} - -object KafkaMessagingSystem { - def readProperties(config: Config): Properties = { - val propertiesKeys = Seq( - "bootstrap.servers", - "acks", - "retries", - "batch.size", - "linger.ms", - "buffer.memory", - "key.serializer", - "value.serializer", - "topic.prefix") - - val properties = new Properties() - propertiesKeys.foreach(key => properties.setProperty(key, config.getString(key))) - - properties - } -} diff --git a/core/src/main/scala/com.mediative.amadou/monitoring/MessagingSystem.scala b/core/src/main/scala/com.mediative.amadou/monitoring/MessagingSystem.scala deleted file mode 100644 index 3557c7e..0000000 --- a/core/src/main/scala/com.mediative.amadou/monitoring/MessagingSystem.scala +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou -package monitoring - -import com.typesafe.config.Config -import scala.language.implicitConversions - -object MessagingSystem { - def create(config: Config) = config.hasPath("kafka.bootstrap.servers") match { - case true => new KafkaMessagingSystem(config.getConfig("kafka")) - case false => new PrintMessagingSystem - } - - trait Context { - def jobId: String - def eventDate: DateInterval - def processId: String = java.util.UUID.randomUUID().toString - def startTime: Long = System.currentTimeMillis - def duration: Long = System.currentTimeMillis - startTime - } -} - -abstract class MessagingSystem { - import MessagingSystem.Context - - def publish(topic: String, message: String): Unit - def stop(): Unit = () - - // high level helper functions - def publishProcessStarting(context: Context): Unit = - publishRunEvent(context, state = Processing) - - def publishProcessComplete(context: Context): Unit = - publishRunEvent(context, state = Complete) - - def publishProcessFailed(context: Context, failure: Throwable): Unit = - publishRunEvent(context, state = Failed, message = failureToMessage(failure)) - - def publishStageStarting(context: Context, stage: String, message: String = ""): Unit = - publishStageEvent(context, state = Processing, stage = stage, message = message) - - def publishStageComplete(context: Context, stage: String, message: String = ""): Unit = - publishStageEvent(context, state = Complete, stage = stage, message = message) - - def publishStageRetrying(context: Context, stage: String): Unit = - publishStageEvent(context, state = Retrying, stage = stage) - - def publishStageFailed(context: Context, stage: String, failure: Throwable): Unit = - publishStageEvent(context, state = Failed, stage = stage, message = failureToMessage(failure)) - - def publishMetrics(context: Context, stage: String, metrics: Map[String, Double]): Unit = - publish( - "metrics", - MetricsEvent( - jobId = context.jobId, - processId = context.processId, - timestamp = System.currentTimeMillis(), - stage = stage, - message = metrics - )) - - private def publishRunEvent(context: Context, state: StateRecord, message: String = "") = - publish( - "jobs", - RunEvent( - jobId = context.jobId, - processId = context.processId, - timestamp = System.currentTimeMillis(), - processingDate = context.eventDate.format("yyyy-MM-dd"), - state = state.identifier, - duration = state match { - case Complete => context.duration - case _ => 0L - }, - message = message - )) - - private def publishStageEvent( - context: Context, - state: StateRecord, - stage: String, - message: String = ""): Unit = - publish( - "stages", - StageEvent( - jobId = context.jobId, - processId = context.processId, - timestamp = System.currentTimeMillis(), - stage = stage, - state = state.identifier, - duration = state match { - case Complete => context.duration - case _ => 0L - }, - message = message - )) - - private implicit def processMessageToString(message: RunEvent): String = - upickle.default.write(message) - private implicit def stageMessageToString(message: StageEvent): String = - upickle.default.write(message) - private implicit def metricsMessageToString(message: MetricsEvent): String = - upickle.default.write(message) - private def failureToMessage(failure: Throwable) = - s"${failure.getClass.getName}: ${failure.getMessage}" -} diff --git a/core/src/main/scala/com.mediative.amadou/monitoring/PrintMessagingSystem.scala b/core/src/main/scala/com.mediative.amadou/monitoring/PrintMessagingSystem.scala deleted file mode 100644 index 19326f8..0000000 --- a/core/src/main/scala/com.mediative.amadou/monitoring/PrintMessagingSystem.scala +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou -package monitoring - -class PrintMessagingSystem extends MessagingSystem with Logging { - override def publish(topic: String, message: String): Unit = - logger.info(s"Publishing to $topic: $message") -} diff --git a/core/src/main/scala/com.mediative.amadou/package.scala b/core/src/main/scala/com.mediative.amadou/package.scala deleted file mode 100644 index 00d9784..0000000 --- a/core/src/main/scala/com.mediative.amadou/package.scala +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative - -import org.apache.spark.sql._ - -package object amadou { - type Config = com.typesafe.config.Config - type Gauge = io.prometheus.client.Gauge - type Counter = io.prometheus.client.Counter - - implicit class SparkHdfsUrlReaderOps(val self: DataFrameReader) extends AnyVal { - def csv(url: HdfsUrl*) = self.csv(url.map(_.toString): _*) - def json(url: HdfsUrl*) = self.json(url.map(_.toString): _*) - def load(url: HdfsUrl*) = self.load(url.map(_.toString): _*) - def orc(url: HdfsUrl*) = self.orc(url.map(_.toString): _*) - def parquet(url: HdfsUrl*) = self.parquet(url.map(_.toString): _*) - def text(url: HdfsUrl*) = self.text(url.map(_.toString): _*) - def textFile(url: HdfsUrl*) = self.textFile(url.map(_.toString): _*) - } - - implicit class SparkHdfsUrlWriteOps[T](val self: DataFrameWriter[T]) extends AnyVal { - def csv(url: HdfsUrl) = self.csv(url.toString) - def json(url: HdfsUrl) = self.json(url.toString) - def save(url: HdfsUrl) = self.save(url.toString) - def orc(url: HdfsUrl) = self.orc(url.toString) - def parquet(url: HdfsUrl) = self.parquet(url.toString) - def text(url: HdfsUrl) = self.text(url.toString) - } - - implicit class SymbolToStage(val self: Symbol) extends AnyVal { - def stage[I, T](f: Stage.Context[I] => T) = Stage(self.name)(f) - def source[T](read: Stage.Context[SparkSession] => Dataset[T]) = Stage.source(self.name)(read) - def transform[S, T](transform: Stage.Context[Dataset[S]] => Dataset[T]) = - Stage.transform(self.name)(transform) - def sink[T](write: Stage.Context[Dataset[T]] => Unit) = Stage.sink(self.name)(write) - } - - /** - * Helpers for working with Dataset columns. - */ - implicit class SparkColumnOps(val self: Column) extends AnyVal { - import org.apache.spark.sql.functions.when - - /** - * Filter out values which are null, empty or "null". - * - * @example - * {{{ - * dataset.filter($"UserId".isDefined) - * }}} - */ - def isDefined: Column = - self.isNotNull && !(self === "") && !(self === "null") - - /** - * Replace "null" string with NULL value. - * - * @example - * {{{ - * dataset.select($"Description".nullify as "description") - * }}} - */ - def nullify: Column = - when(self === "null", null).otherwise(self) - } -} diff --git a/core/src/test/resources/application.conf b/core/src/test/resources/application.conf deleted file mode 100644 index 8231c6b..0000000 --- a/core/src/test/resources/application.conf +++ /dev/null @@ -1,20 +0,0 @@ -hdfs { - root = target/hdfs-root - - raw { - url = ${hdfs.root}/data - dateFormat = "yyyy/MM/dd" - } - - clean { - url = ${hdfs.root}/etl - dateFormat = "'date='yyyy-MM-dd" - } -} - -retry.max = 1 - -test_etl { - url = src/test/resources/hdfs/test_etl - dateFormat = "'year='yyyy'/month='MM" -} diff --git a/core/src/test/resources/config-reader-spec.properties b/core/src/test/resources/config-reader-spec.properties deleted file mode 100644 index ea07941..0000000 --- a/core/src/test/resources/config-reader-spec.properties +++ /dev/null @@ -1,2 +0,0 @@ -user = john -pass = secret diff --git a/core/src/test/resources/hdfs/quotes.txt b/core/src/test/resources/hdfs/quotes.txt deleted file mode 100644 index 084e60a..0000000 --- a/core/src/test/resources/hdfs/quotes.txt +++ /dev/null @@ -1,5 +0,0 @@ -Jeg taler helst med Børn; thi om dem tør man dog haabe, at de kan blive Fornuft-Væsener; men de, der ere blevne det! Herre Jemini! -Livet må forstås baglæns, men må leves forlæns. -Hvad er det Umagen værd at erindre det Forbigangne, der ikke kan blive et Nærværende -Nu skal man til Australien nu til Maanen, nu ned i en Hule under Jorden, nu Fanden i Vold i Røven - efter en Indvoldsorm; nu skal Teleskopet bruges, nu Mikroskopet: hvo Satan kan holde det ud! -Folk forstaae mig saa lidt, at de ikke engang forstaae mine Klager over, at de ikke forstaae mig. diff --git a/core/src/test/resources/hdfs/test_etl/year=2017/month=02/data.csv b/core/src/test/resources/hdfs/test_etl/year=2017/month=02/data.csv deleted file mode 100644 index 4db0c79..0000000 --- a/core/src/test/resources/hdfs/test_etl/year=2017/month=02/data.csv +++ /dev/null @@ -1,4 +0,0 @@ -Object Name,Object Colour,Observed Time,Observed Latitude,Observed Longitude,Speed -Bus,Yellow,2015-09-12,42.4,51.2,0 -Car,Pink,2016-03-04,11.3,23.0,30 -Truck,Orange,2017-01-30,12.4,56.7,89 diff --git a/core/src/test/scala/com.mediative.amadou/ConfigLoaderSpec.scala b/core/src/test/scala/com.mediative.amadou/ConfigLoaderSpec.scala deleted file mode 100644 index f7f4a0d..0000000 --- a/core/src/test/scala/com.mediative.amadou/ConfigLoaderSpec.scala +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.scalatest.{WordSpec, Matchers} -import com.typesafe.config.ConfigFactory -import java.util.Properties - -object ConfigLoaderSpec { - case class Database(url: String, properties: Properties) -} - -class ConfigLoaderSpec extends WordSpec with Matchers with ConfigLoader { - import ConfigLoaderSpec.Database - - "propertiesValueReader" should { - "load from given path" in { - val config = - ConfigFactory.parseString(""" - database { - url = "jdbc:postgresql:testdb" - properties = src/test/resources/config-reader-spec.properties - } - """) - val db = config.as[Database]("database") - db.properties.size should be(2) - db.properties.getProperty("user") should be("john") - db.properties.getProperty("pass") should be("secret") - } - - "be empty when no path is given" in { - val config = ConfigFactory.parseString(""" - database.url = "jdbc:postgresql:testdb" - """) - val db = config.as[Database]("database") - db.properties.isEmpty should be(true) - } - - "fail when given path does not exist" in { - val config = - ConfigFactory.parseString(""" - database { - url = "jdbc:postgresql:testdb" - properties = src/test/resources/doesn-not-exists.properties - } - """) - - the[java.io.FileNotFoundException] thrownBy { - config.as[Database]("database") - } should have message "src/test/resources/doesn-not-exists.properties (No such file or directory)" - } - } -} diff --git a/core/src/test/scala/com.mediative.amadou/DateIntervalSpec.scala b/core/src/test/scala/com.mediative.amadou/DateIntervalSpec.scala deleted file mode 100644 index ac6a83f..0000000 --- a/core/src/test/scala/com.mediative.amadou/DateIntervalSpec.scala +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.scalatest._ - -class DateIntervalSpec extends FreeSpec { - - "Day" - { - "should print date" in { - assert(Day(1999, 12, 31).toString == "1999-12-31") - assert(Day(2016, 6, 5).toString == "2016-06-05") - } - - "should parse date" in { - val date = Day.parse("2016-06-05") - assert(date == Some(Day(2016, 6, 5))) - } - - "should have next/prev" in { - val dt = Day(2016, 6, 5) - assert(dt.prev < dt) - assert(dt < dt.next) - assert(dt.prev == Day(2016, 6, 4)) - assert(dt.next == Day(2016, 6, 6)) - - val dt2 = Day(1999, 12, 31) - assert(dt2.prev == Day(1999, 12, 30)) - assert(dt2.next == Day(2000, 1, 1)) - } - - "should have iterator for dates" in { - val dt = Day(2016, 6, 5) - assert(dt.by(Day).size == 1) - } - } - - "Week" - { - "should print date" in { - assert(Week(1999, 52).toString == "1999-W52") - assert(Week(2016, 1).toString == "2016-W01") - } - - "should parse date" in { - assert(Week.parse("2016-W01") == Some(Week(2016, 1))) - assert(Week.parse("1999-W51") == Some(Week(1999, 51))) - } - - "should have next/prev" in { - val dt = Week(2016, 6) - assert(dt.prev < dt) - assert(dt < dt.next) - assert(dt.prev == Week(2016, 5)) - assert(dt.next == Week(2016, 7)) - - val dt2 = Week(1999, 52) - assert(dt2.prev == Week(1999, 51)) - assert(dt2.next == Week(2000, 1)) - } - - "should have iterator for dates" in { - val dt = Week(2016, 6) - assert(dt.by(Day).size == 7) - } - } - - "Month" - { - "should print date" in { - assert(Month(1999, 12).toString == "1999-12") - assert(Month(2016, 6).toString == "2016-06") - } - - "should parse date" in { - val dt = Month.parse("2016-06") - assert(dt == Some(Month(2016, 6))) - } - - "should have next/prev" in { - val dt = Month(2016, 6) - assert(dt.prev < dt) - assert(dt < dt.next) - assert(dt.prev == Month(2016, 5)) - assert(dt.next == Month(2016, 7)) - - val dt2 = Month(1999, 12) - assert(dt2.prev == Month(1999, 11)) - assert(dt2.next == Month(2000, 1)) - } - - "should have iterator for dates" in { - val dt = Month(2016, 6) - assert(dt.by(Day).size == 30) - - val dt2 = Month(2016, 2) - assert(dt2.by(Day).size == 29) - - val dt3 = Month(1999, 2) - assert(dt3.by(Day).size == 28) - } - } - - "Quarter" - { - "should truncate month" in { - assert(Month(Quarter(2016, Quarter.Q1)) == Month(2016, 1)) - assert(Month(Quarter(2016, Quarter.Q2)) == Month(2016, 4)) - assert(Month(Quarter(2016, Quarter.Q3)) == Month(2016, 7)) - assert(Month(Quarter(2016, Quarter.Q4)) == Month(2016, 10)) - - assert(Month(Quarter(Month(2016, 2))) == Month(2016, 1)) - assert(Month(Quarter(Month(2016, 3))) == Month(2016, 1)) - assert(Month(Quarter(Month(2016, 12))) == Month(2016, 10)) - } - - "should print date" in { - assert(Quarter(1999, Quarter.Q1).toString == "1999-Q1") - assert(Quarter(2016, Quarter.Q3).toString == "2016-Q3") - } - - "should parse date" in { - val dt = Quarter.parse("2016-Q4") - assert(dt == Some(Quarter(2016, Quarter.Q4))) - assert(Month(dt.get) == Month(2016, 10)) - } - - "should have next/prev" in { - val dt = Quarter(2014, Quarter.Q1) - assert(dt.prev < dt) - assert(dt < dt.next) - assert(dt.prev == Quarter(2013, Quarter.Q4)) - assert(dt.next == Quarter(2014, Quarter.Q2)) - - val dt2 = Quarter(1999, Quarter.Q4) - assert(dt2.prev == Quarter(1999, Quarter.Q3)) - assert(dt2.next == Quarter(2000, Quarter.Q1)) - } - - "should have iterator for dates" in { - val dt = Quarter(2016, Quarter.Q1) - assert(dt.by(Day).size == 91) - - val dt2 = Quarter(1999, Quarter.Q1) - assert(dt2.by(Day).size == 90) - - val dt3 = Quarter(1999, Quarter.Q4) - assert(dt3.by(Day).size == 92) - } - } - - "Year" - { - "should print date" in { - assert(Year(1999).toString == "1999") - assert(Year(2016).toString == "2016") - } - - "should parse date" in { - val dt = Year.parse("2016") - assert(dt == Some(Year(2016))) - } - - "should have next/prev" in { - val dt = Year(2016) - assert(dt.prev < dt) - assert(dt < dt.next) - assert(dt.prev == Year(2015)) - assert(dt.next == Year(2017)) - - val dt2 = Year(1999) - assert(dt2.prev == Year(1998)) - assert(dt2.next == Year(2000)) - } - - "should have iterator for dates" in { - val dt = Year(2016) - assert(dt.by(Day).size == 366) - - val dt2 = Year(1999) - assert(dt2.by(Day).size == 365) - - assert(Year(1999).by(Quarter).size == 4) - } - } - -} diff --git a/core/src/test/scala/com.mediative.amadou/ImplicitsSpec.scala b/core/src/test/scala/com.mediative.amadou/ImplicitsSpec.scala deleted file mode 100644 index a4fcfce..0000000 --- a/core/src/test/scala/com.mediative.amadou/ImplicitsSpec.scala +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.scalatest.{WordSpec, Matchers} - -object SparkImplicitsSpec { - case class Account(id: Int, name: String, externalId: String) -} - -class SparkImplicitsSpec extends WordSpec with Matchers with SparkJobSuiteBase { - import SparkImplicitsSpec._ - - "SparkColumnOps.isDefined" should { - "filter values which are null, empty or the string 'null'" in { - import spark.implicits._ - - val accounts = List( - Account(0, "Account #0", ""), - Account(1, "Account #1", "00000000001"), - Account(2, "Account #2", "null"), - Account(3, "Account #3", "Not null"), - Account(4, "Account #4", null), - Account(5, "Account #5", "00000000002") - ) - val data = spark.createDataset(accounts) - data.count shouldBe 6 - - val filtered = data.filter($"externalId".isDefined) - filtered.collect.toList shouldBe List( - Account(1, "Account #1", "00000000001"), - Account(3, "Account #3", "Not null"), - Account(5, "Account #5", "00000000002") - ) - } - } - - "SparkColumnOps.nullify" should { - "turn 'null' string values into null" in { - import spark.implicits._ - - val accounts = List( - Account(0, "Account #0", ""), - Account(1, "Account #1", "00000000001"), - Account(2, "Account #2", "null"), - Account(3, "Account #3", "Not null"), - Account(4, "Account #4", null), - Account(5, "Account #5", "00000000002") - ) - val data = spark.createDataset(accounts) - data.count shouldBe 6 - - val filtered = data - .select( - $"id", - $"name".nullify as "name", - $"externalId".nullify as "externalId" - ) - .as[Account] - - filtered.collect.toList shouldBe List( - Account(0, "Account #0", ""), - Account(1, "Account #1", "00000000001"), - Account(2, "Account #2", null), - Account(3, "Account #3", "Not null"), - Account(4, "Account #4", null), - Account(5, "Account #5", "00000000002") - ) - } - } -} diff --git a/core/src/test/scala/com.mediative.amadou/ManagedIOSpec.scala b/core/src/test/scala/com.mediative.amadou/ManagedIOSpec.scala deleted file mode 100644 index 3a5af49..0000000 --- a/core/src/test/scala/com.mediative.amadou/ManagedIOSpec.scala +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.scalatest.{WordSpec, Matchers} -import java.io.IOException - -object ManagedIOSpec { - class IO extends AutoCloseable { - var closed = false - def fail = throw new IOException("IO failed") - override def close(): Unit = - closed = true - } - - object IO { - def openFail(): IO = - throw new IOException("IO open failed") - } - - class IOWithFailingClose extends IO { - override def close(): Unit = { - closed = true - throw new IOException("IO close failed") - } - } -} - -class ManagedIOSpec extends WordSpec with Matchers { - import ManagedIOSpec._ - - "ManagedIO" should { - "call close on happy path" in { - val io0 = new IO - val io1 = new IO - for { - x0 <- ManagedIO(io0) - x1 <- ManagedIO(io1) - } { - x0.closed shouldBe false - x1.closed shouldBe false - () - } - - io0.closed shouldBe true - io1.closed shouldBe true - } - - "call close when open fails" in { - val io0 = new IO - - the[IOException] thrownBy { - for { - x0 <- ManagedIO(io0) - x1 <- ManagedIO(IO.openFail()) - } () - } should have message "IO open failed" - - io0.closed shouldBe true - } - - "not call close for inner open calls" in { - the[IOException] thrownBy { - for { - x0 <- ManagedIO(IO.openFail()) - } fail("Should not be called") - } should have message "IO open failed" - } - - "call close with nested failures" in { - val io0 = new IO - val io1 = new IO - - the[IOException] thrownBy { - for { - x0 <- ManagedIO(io0) - x1 <- ManagedIO(io1) - } { - x1.fail - } - } should have message "IO failed" - - io0.closed shouldBe true - io1.closed shouldBe true - } - - "propagate close failures" in { - val io0 = new IO - val io1 = new IOWithFailingClose - - the[IOException] thrownBy { - for { - x0 <- ManagedIO(io0) - x1 <- ManagedIO(io1) - } { - () - } - } should have message "IO close failed" - - io0.closed shouldBe true - io1.closed shouldBe true - } - } -} diff --git a/core/src/test/scala/com.mediative.amadou/StageSpec.scala b/core/src/test/scala/com.mediative.amadou/StageSpec.scala deleted file mode 100644 index 4352e1f..0000000 --- a/core/src/test/scala/com.mediative.amadou/StageSpec.scala +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.scalatest._ -import org.apache.spark.sql.SparkSession -import scala.util.{Success, Try} - -object StageSpec { - case class Raw(a: String, b: String) - case class Clean(a: Long, b: Int) - - case class TestContext[+I]( - override val spark: SparkSession, - override val date: DateInterval, - override val value: I) - extends Stage.Context(spark, date, value) { self => - - override def withValue[U](u: U) = new TestContext(spark, date, u) { - override protected var stageNames = self.stageNames - } - override def run[T](stage: Stage[I, T], result: => T): Stage.Result[T] = { - stageNames += stage.name - Try(result) - } - - def stagesRun = List(stageNames: _*) - protected var stageNames = scala.collection.mutable.ArrayBuffer[String]() - } -} - -class StageSpec extends FreeSpec with Matchers with SparkJobSuiteBase { - - import StageSpec._ - - val InitStage = Stage[Int, Int]("init")(_.value) - val ToStringStage = Stage[Any, String]("toString")(_.value.toString) - val ToIntStage = Stage[String, Int]("toInt")(_.value.toInt) - val FailStage = Stage[Int, Int]("fail")(_.value / 0) - - "Stage" - { - "name" - { - "from string" in { - InitStage.name should be("init") - } - - "from scala.Symbol" in { - 'NameFromSymbol.stage[Int, Int](_ => 1).name should be("NameFromSymbol") - } - } - - "run" - { - "succeeding operation" in { - val ctx = TestContext(spark, Day.today, 1) - InitStage.run(ctx) should be(Success(1)) - ctx.stagesRun should be("init" :: Nil) - } - - "failing operation" in { - val ctx = TestContext(spark, Day.today, 1) - the[ArithmeticException] thrownBy FailStage.run(ctx).get should have message "/ by zero" - ctx.stagesRun should be("fail" :: Nil) - } - } - - "map" - { - "succeeding operation" in { - val ctx = TestContext(spark, Day.today, 42) - InitStage.map(_ + 1).run(ctx) should be(Success(43)) - ctx.stagesRun should be("init" :: Nil) - } - - "multiple" in { - val ctx = TestContext(spark, Day.today, 42) - InitStage.map(_ + 1).map(_ + 1).run(ctx) should be(Success(44)) - ctx.stagesRun should be("init" :: Nil) - } - - "failing operation" in { - val ctx = TestContext(spark, Day.today, 1) - the[ArithmeticException] thrownBy InitStage - .map(_ / 0) - .run(ctx) - .get should have message "/ by zero" - ctx.stagesRun should be("init" :: Nil) - } - - "failing operation with unreachable mapping" in { - val ctx = TestContext(spark, Day.today, 1) - the[ArithmeticException] thrownBy InitStage - .map(_ / 0) - .map(_ + 1) - .run(ctx) - .get should have message "/ by zero" - ctx.stagesRun should be("init" :: Nil) - } - } - - "flatMap" - { - "succeeding operation" in { - val ctx = TestContext(spark, Day.today, 42) - InitStage.flatMap(_ => ToStringStage).run(ctx) should be(Success("42")) - ctx.stagesRun should be("init" :: "toString" :: Nil) - } - - "multiple" in { - val ctx = TestContext(spark, Day.today, 42) - val stages = for { - init <- InitStage - toString <- ToStringStage - value <- 'stringToInt.stage[String, Int](_.value.toInt) - } yield value - - stages.run(ctx) should be(Success(42)) - ctx.stagesRun should be("init" :: "toString" :: "stringToInt" :: Nil) - } - - "failing operation" in { - val ctx = TestContext(spark, Day.today, 42) - val stages = for { - init <- InitStage - value <- FailStage - toString <- ToStringStage - } yield () - - the[ArithmeticException] thrownBy stages.run(ctx).get should have message "/ by zero" - ctx.stagesRun should be("init" :: "fail" :: Nil) - } - - "failing last operation" in { - val ctx = TestContext(spark, Day.today, 42) - val stages = for { - init <- InitStage - toString <- ToStringStage - toInt <- ToIntStage - value <- FailStage - } yield () - - the[ArithmeticException] thrownBy stages.run(ctx).get should have message "/ by zero" - ctx.stagesRun should be("init" :: "toString" :: "toInt" :: "fail" :: Nil) - } - } - - "andThen and ~>" - { - "succeeding operation" in { - val ctx = TestContext(spark, Day.today, 42) - (InitStage andThen ToStringStage).run(ctx) should be(Success("42")) - ctx.stagesRun should be("init" :: "toString" :: Nil) - } - - "succeeding operation using ~>" in { - val ctx2 = TestContext(spark, Day.today, 42) - (InitStage ~> ToStringStage ~> ToIntStage).run(ctx2) should be(Success(42)) - ctx2.stagesRun should be("init" :: "toString" :: "toInt" :: Nil) - } - - "failing operation" in { - val ctx = TestContext(spark, Day.today, 42) - val stages: Stage[Int, String] = InitStage ~> FailStage ~> ToStringStage - - the[ArithmeticException] thrownBy stages.run(ctx).get should have message "/ by zero" - ctx.stagesRun should be("init" :: "fail" :: Nil) - } - - "failing last operation" in { - val ctx = TestContext(spark, Day.today, 42) - val stages: Stage[Int, Int] = InitStage ~> ToStringStage ~> ToIntStage ~> FailStage - - the[ArithmeticException] thrownBy stages.run(ctx).get should have message "/ by zero" - ctx.stagesRun should be("init" :: "toString" :: "toInt" :: "fail" :: Nil) - } - } - - "sequence" - { - "combines list of stages into one list of results" in { - val ctx = TestContext(spark, Day.today, 42) - val sequence = for (i <- 0 to 10) - yield - Stage[Int, Int](i.toString) { ctx => - i + 1 - } - val stages = Stage.sequence(sequence) - - stages.run(ctx) should be(Success(Seq(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11))) - ctx.stagesRun should be(List("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")) - } - - "failing operation" in { - val ctx = TestContext(spark, Day.today, 42) - val sequence = for (i <- 0 to 10) - yield - Stage[Int, Int](i.toString) { ctx => - i / (i - 5) - } - val stages = Stage.sequence(sequence) - - the[ArithmeticException] thrownBy stages.run(ctx).get should have message "/ by zero" - ctx.stagesRun should be("0" :: "1" :: "2" :: "3" :: "4" :: "5" :: Nil) - } - } - - "sequenceAll" - { - "combines list of stages into one list of results" in { - val ctx = TestContext(spark, Day.today, 42) - val sequence = for (i <- 0 to 3) - yield - Stage[Int, Int](i.toString) { ctx => - i + 1 - } - val stages = Stage.sequenceAll(sequence) - - stages.run(ctx) should be(Success(Seq(1, 2, 3, 4))) - ctx.stagesRun should be("0" :: "1" :: "2" :: "3" :: Nil) - } - - "failing operation" in { - val ctx = TestContext(spark, Day.today, 42) - val sequence = for (i <- 0 to 3) - yield - Stage[Int, Int](i.toString) { ctx => - i / (i - 2) - } - val stages = Stage.sequenceAll(sequence) - val result = stages.run(ctx) - - result.isFailure should be(true) - the[Stage.SequenceAllException[Int, Int]] thrownBy result.get should have message ( - """1 stage(s) failed: - | - 2 failed: (java.lang.ArithmeticException) / by zero""".stripMargin - ) - ctx.stagesRun should be("0" :: "1" :: "2" :: "3" :: Nil) - } - } - - "identity" - { - "passes original value" in { - val ctx = TestContext(spark, Day.today, 42) - val empty: Stage[Int, Int] = Stage.identity - - empty.run(ctx) should be(Success(42)) - ctx.stagesRun should be("identity" :: Nil) - } - - "map run via the identity stage" in { - val ctx = TestContext(spark, Day.today, 42) - Stage.identity[Int].map(_.toDouble).run(ctx) should be(Success(42.0)) - ctx.stagesRun should be("identity" :: Nil) - } - - "flatMap ignores the identity stage" in { - val ctx = TestContext(spark, Day.today, 42) - Stage.identity[Int].flatMap(_ => ToStringStage).run(ctx) should be(Success("42")) - ctx.stagesRun should be("toString" :: Nil) - } - } - - "source" - { - "passes original value" in { - val ctx = TestContext(spark, Day.today, 42) - import spark.implicits._ - - val stages = for { - raw1 <- 'Read1.source[String] { ctx => - ctx.spark.read.textFile("src/test/resources/hdfs/test_etl/year=2017/month=02/data.csv") - } - - wordCount1 <- 'CountWords1.transform[String, Int](_.value.map(_.split(" ").length)) - - raw2 <- 'Read2.source[String] { ctx => - ctx.spark.read.textFile("src/test/resources/hdfs/quotes.txt") - } - - wordCount2 <- 'CountWords2.transform[String, Int](_.value.map(_.split(" ").length)) - - } yield wordCount1.collect.sum + wordCount2.collect.sum - - stages.run(ctx) should be(Success(112)) - ctx.stagesRun should be("Read1" :: "CountWords1" :: "Read2" :: "CountWords2" :: Nil) - } - } - } -} diff --git a/core/src/test/scala/com.mediative.amadou/test/TestEtl.scala b/core/src/test/scala/com.mediative.amadou/test/TestEtl.scala deleted file mode 100644 index 756369e..0000000 --- a/core/src/test/scala/com.mediative.amadou/test/TestEtl.scala +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou -package test - -import org.apache.spark.sql._ -import org.apache.spark.sql.functions._ -import org.apache.spark.sql.types._ - -object TestEtl extends SparkRunner[TestEtlJob] { - val jobName = "test_etl" - val schedule = today - - override val recordsProcessed = gauge("test_etl_processed", "Number of processed rows") - - val RawSchema = StructType( - Array( - StructField("Object Name", StringType), - StructField("Object Colour", StringType), - StructField("Observed Time", TimestampType), - StructField("Observed Latitude", DoubleType), - StructField("Observed Longitude", DoubleType), - StructField("Speed", LongType) - )) - - case class Clean( - name: String, - isPink: Boolean, - eventDate: java.sql.Timestamp, - latitude: Double, - longitude: Double, - speed: Long, - processingDate: java.sql.Timestamp) - - override def createJob(config: Config) = - TestEtlJob( - config.as[HdfsUrl]("test_etl"), - config.as[HdfsUrl]("hdfs.raw") / jobName, - config.as[HdfsUrl]("hdfs.clean") / jobName, - recordsProcessed - ) - -} - -case class TestEtlJob( - testEtlUrl: HdfsUrl, - rawUrl: HdfsUrl, - cleanUrl: HdfsUrl, - recordsProcessed: Gauge) - extends SparkJob { - - import TestEtl.{RawSchema, Clean} - - def shouldRunForDate(spark: SparkSession, date: DateInterval): Boolean = true - - override val stages = - clean ~> 'SaveClean.sink[Clean](ctx => - ctx.value.write.mode(SaveMode.Overwrite).parquet(cleanUrl / ctx.date)) - - def clean: Stage[SparkSession, Dataset[Clean]] = - for { - // Read raw input from input - rawData <- 'ReadRaw.source[Row] { ctx => - ctx.spark.read - .option("header", true) - .option("dateFormat", "yyyy-MM-dd") - .schema(RawSchema) - .csv(testEtlUrl / ctx.date / "*.csv") - } - - saveRaw <- 'SaveRaw.sink[Row](ctx => - ctx.value.write.mode(SaveMode.Overwrite).csv(rawUrl / ctx.date)) - - cleanData <- 'CleanData.transform[Row, Clean] { ctx => - import ctx.spark.implicits._ - - val CleanSchema = implicitly[Encoder[Clean]].schema - val isPink = udf((colorName: String) => colorName.compareToIgnoreCase("pink") == 0) - - ctx.value - .withColumnRenamed("Object Name", "name") - .withColumnRenamed("Observed Time", "eventDate") - .withColumnRenamed("Observed Latitude", "latitude") - .withColumnRenamed("Observed Longitude", "longitude") - .withColumnRenamed("Speed", "speed") - .withColumn("isPink", isPink($"Object Colour")) - .withColumn("processingDate", lit(ctx.date.asTimestamp)) - .select(CleanSchema.fieldNames.map(col): _*) - .as[Clean] - } - } yield cleanData -} diff --git a/core/src/test/scala/com.mediative.amadou/test/TestEtlSpec.scala b/core/src/test/scala/com.mediative.amadou/test/TestEtlSpec.scala deleted file mode 100644 index c630fa7..0000000 --- a/core/src/test/scala/com.mediative.amadou/test/TestEtlSpec.scala +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou -package test - -import org.scalatest._ -import org.apache.spark.sql.types._ - -class TestEtlSpec extends FreeSpec with SparkJobSuiteBase { - - val job = TestEtl.createJob(config) - val date = Day(2017, 2, 21) - - val cleanSchema = StructType( - Array( - StructField("name", StringType), - StructField("isPink", BooleanType), - StructField("eventDate", TimestampType), - StructField("latitude", DoubleType), - StructField("longitude", DoubleType), - StructField("speed", LongType), - StructField("processingDate", TimestampType, false) - )) - - "TestEtl" - { - "should have expected schema and number of entries" in { - val clean = job.clean.run(Stage.Context(spark, date)) - - assert(clean.isSuccess) - assert(clean.get.schema == cleanSchema) - assert(clean.get.count == 3) - } - - "should persist raw data" in { - val rawPath = job.rawUrl / "2017/02/21" - - assert(rawPath.exists(spark), s"$rawPath does not exist") - } - - "should persist clean data" in { - val cleanPath = job.cleanUrl / "date=2017-02-21" - - job.stages.run(Stage.Context(spark, date)) - assert(cleanPath.exists(spark), s"$cleanPath does not exist") - } - } -} diff --git a/project/build.properties b/project/build.properties deleted file mode 100644 index 64317fd..0000000 --- a/project/build.properties +++ /dev/null @@ -1 +0,0 @@ -sbt.version=0.13.15 diff --git a/project/plugins.sbt b/project/plugins.sbt deleted file mode 100644 index f19135f..0000000 --- a/project/plugins.sbt +++ /dev/null @@ -1,7 +0,0 @@ -resolvers += Resolver.bintrayIvyRepo("mediative", "sbt-plugins") -resolvers += Resolver.bintrayIvyRepo("fonseca", "sbt-plugins") - -addSbtPlugin("com.mediative.sbt" % "sbt-mediative-core" % "0.5.6") -addSbtPlugin("com.mediative.sbt" % "sbt-mediative-oss" % "0.5.6") -addSbtPlugin("com.mediative.sbt" % "sbt-mediative-devops" % "0.5.6") -addSbtPlugin("com.github.tkawachi" % "sbt-doctest" % "0.4.1") diff --git a/testkit/src/main/resources/reference.conf b/testkit/src/main/resources/reference.conf deleted file mode 100644 index 3fa68bd..0000000 --- a/testkit/src/main/resources/reference.conf +++ /dev/null @@ -1 +0,0 @@ -spark.sql.warehouse.dir = target/spark-warehouse diff --git a/testkit/src/main/scala/com.mediative.amadou/SparkJobSuiteBase.scala b/testkit/src/main/scala/com.mediative.amadou/SparkJobSuiteBase.scala deleted file mode 100644 index 4dfc7d0..0000000 --- a/testkit/src/main/scala/com.mediative.amadou/SparkJobSuiteBase.scala +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2017 Mediative - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.mediative.amadou - -import org.scalatest.BeforeAndAfterAll -import org.scalatest.Suite -import com.holdenkarau.spark.testing.DatasetSuiteBase -import com.typesafe.config.ConfigFactory -import org.apache.hadoop.conf.Configuration -import org.apache.hadoop.fs.{FileSystem, Path} - -/** - * Base class which provides an environment for running tasks. - */ -trait SparkJobSuiteBase extends DatasetSuiteBase with BeforeAndAfterAll { self: Suite => - val config = ConfigFactory.load() - val fileSystem = FileSystem.get(new Configuration()) - - System.setProperty("derby.stream.error.file", "target/spark-warehouse-derby.log") - - override def beforeAll() = { - super.beforeAll() - - if (config.hasPath("hdfs.root")) { - val rootUrl = config.getString("hdfs.root") - val path = new Path(rootUrl) - - /* Cleanup the HDFS root before running the test. */ - if (rootUrl.startsWith("target/") && fileSystem.exists(path)) { - assert(fileSystem.delete(path, true)) - } - } - () - } -}