Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
a81e149
CON-637: Create Order Builder (#360)
javierlores Apr 6, 2019
730d342
add some syntactic sugar
jtnelson Apr 6, 2019
0e913e0
fix formatting
jtnelson Apr 6, 2019
6717c75
CON-640: Concourse Drive Query Methods (#363)
javierlores Jun 24, 2019
ddc7260
Merge branch 'develop' into epic/sorting
jtnelson Jun 24, 2019
d286806
don't run spotless task
jtnelson Jun 24, 2019
a1eb8d1
try again:
jtnelson Jun 24, 2019
a5f2ec3
more unit tests
jtnelson Jun 24, 2019
02c00fa
more unit tests and fixes
jtnelson Jun 24, 2019
a1cc3d4
add annotations back
jtnelson Jun 25, 2019
06e15b4
add delegate methods for Timestr
jtnelson Jun 25, 2019
9d98cb5
more impl
jtnelson Jun 25, 2019
b85b0ae
formatting
jtnelson Jun 25, 2019
e9862f2
docs
jtnelson Jun 25, 2019
e54dbf7
fix some bugs
jtnelson Jun 25, 2019
d8c1b48
implement findCriteriaOrder
jtnelson Jun 25, 2019
3cb7caf
remove annotations
jtnelson Jun 25, 2019
a89b2e5
implementation for findKeyOperatorValueOrder
jtnelson Jun 25, 2019
0590516
idk
jtnelson Jun 25, 2019
3860750
implement getCclTimeOrder
jtnelson Jun 25, 2019
3b53498
more impls
jtnelson Jun 25, 2019
2dde800
another checkpoint
jtnelson Jun 27, 2019
88cb543
add implementations for all the get methods
jtnelson Jun 29, 2019
7f2589b
add docs
jtnelson Jun 29, 2019
5b4bc75
sort
jtnelson Jun 29, 2019
89067fe
make NoOrder a singleton
jtnelson Jun 29, 2019
f9292f0
doc update
jtnelson Jun 29, 2019
a67d7e7
doc update
jtnelson Jun 29, 2019
66671cd
bug fixes and doc updates
jtnelson Jun 29, 2019
cb09bfb
add implementations for select methods
jtnelson Jun 29, 2019
41f87a2
slight refactor
jtnelson Jun 29, 2019
0b0bf98
optimization
jtnelson Jun 29, 2019
2d7e6b0
add performance test and try to run ete test on circle ci
jtnelson Jun 29, 2019
79e413b
formatting
jtnelson Jun 29, 2019
0f8c85b
fix formatting
jtnelson Jun 29, 2019
88ee7f3
try again...
jtnelson Jun 29, 2019
857261e
nvm
jtnelson Jun 29, 2019
485ba8f
refactor tests slightly
jtnelson Jun 29, 2019
f4da1d1
update changelog
jtnelson Jun 29, 2019
2f95992
fix typo
jtnelson Jun 29, 2019
c50e2c6
add Order and Sort classes to ConcourseShell
jtnelson Jun 29, 2019
924247d
formatting
jtnelson Jun 29, 2019
5a7258c
add some more unit tests
jtnelson Jun 29, 2019
990e583
formatting
jtnelson Jun 29, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
name: Build and Publish
command: |
cd ~/$CIRCLE_PROJECT_REPONAME
./gradlew clean build installer uploadArchives bintrayUpload dockerize --no-daemon
./gradlew clean build installer uploadArchives bintrayUpload dockerize -x spotlessJava --no-daemon
- save_cache:
paths:
- ~/.gradle
Expand Down
22 changes: 19 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,29 @@
#### Version 0.10.0 (TBD)

##### New Features

###### Sorting
Concourse Server now (finally) has the ability to sort results!
* A result set that returns data from multiple records (across any number of keys) can be sorted.
* Concourse drivers now feature an `Order` framework that allows the client to specify how Concourse Server should sort a result set. An `Order` can be generated using an intuitive builder chain.
* An Order can be specified using values for any keys; regardless of whether those keys are explictly fetched or not.
* A timestamp can optionally be associated with each order component.
* **NOTE**: If no timestamp is specified with an order component, Concourse Server uses the value that is explicitly fetched in the request OR it looks up the value using the selection timestamp of the request. If there is no selection timestamp, the lookup returns the current value(s).
* A direction (ascending or descending) can optionally be associated with each order component.
* **NOTE**: The default direction is *ascending*.
* An Order can contain an unlimited number of components. If, after evaluating all the order components, two records still have the same sort order, Concourse Server automatically sorts based on the record id.
* If a `null` value is encountered when evaluating an order components, Concourse Server pushes the record containing that `null` value to the "end" of the result set regardless of the order component's direction.

###### ETL
* Added the `com.cinchapi.concourse.etl` package that contains data processing utilities:
* A `Strainer` can be used to process a `Map<String, Object>` using Concourse's data model rules. In particular, the `Strainer` encapsulates logic to break down top-level sequence values and process their elements individually.
* The `Transform` class contains functions for common data transformations.

###### Miscellaneous
* Added an iterative connection builder that is accessible using the `Concourse.at()` static factory method.
* Added the `com.cinchapi.concourse.valididate.Keys` utility class which contains the `#isWritable` method that determines if a proposed key can be written to Concourse.
* Added `Parsers#create` static factory methods that accept a `Criteria` object as a parameter. These new methods compliment existing ones which take a CCL `String` and `TCriteria` object respectively.
* Upgraded the `ccl` dependency to the latest version, which adds support for local criteria evaluation using the `Parser#evaluate` method. The parsers returned from the `Parsers#create` factories all support local evaluation using the function defined in the newly created `Operators#evaluate` utility.
* Added the `com.cinchapi.concourse.etl` package that contains data processing utilities:
* A `Strainer` can be used to process a `Map<String, Object>` using Concourse's data model rules. In particular, the `Strainer` encapsulates logic to break down top-level sequence values and process their elements individually.
* The `Transform` class contains functions for common data transformations.

##### Improvements
* Refactored the `concourse-import` framework to take advantage of version `1.1.0+` of the `data-transform-api` which has a more flexible notion of data transformations. As a result of this change, the `Importables` utility class has been removed. Custom importers that extend `DelimitedLineImporter` can leverage the protected `parseObject` and `importLines` methods to hook into the extraction and import logic in a manner similar to what was possible using the `Importables` functions.
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ subprojects {
compile 'joda-time:joda-time:2.2'
compile 'org.apache.thrift:libthrift:0.9.3'
compile 'commons-configuration:commons-configuration:1.9'
compile group: 'com.cinchapi', name: 'accent4j', version: '1.5.3', changing:true
compile group: 'com.cinchapi', name: 'accent4j', version: '1.6.0', changing:true
compile 'com.cinchapi:lib-config:1.5.1'

testCompile 'junit:junit:4.11'
Expand Down

Large diffs are not rendered by default.

Loading