Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AggregationDataStore: Schema #846

Merged
merged 11 commits into from
Jul 13, 2019

Conversation

QubitPi
Copy link
Contributor

@QubitPi QubitPi commented Jun 4, 2019

Issue #818

@QubitPi QubitPi added this to the elide-5.0 milestone Jun 4, 2019
private final Class<?> entityClass;

@Getter
private final String dateTimeColumn;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not every schema will have a date time column. Let's remove this.

private final String friendlyName;

@Getter(value = AccessLevel.PRIVATE)
private final List<String> metrics;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Metrics and Dimensions should be their own classes.

@Getter
private final String dateTimeColumn;

private final String friendlyName;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Friendly name should be the property of the Dimension class.

private final List<String> dimensions;

@Getter(value = AccessLevel.PRIVATE)
private final Map<String, DimensionSize> dimensionSizes;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cardinality of a dimension should be the property of a DImension.

* @param clz The type of the entity, whose {@link Schema} is to be constructed
* @param entityDictionary The meta info object that helps to construct {@link Schema}
*/
public Schema(Class<?> clz, EntityDictionary entityDictionary) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we change "clz" to "entityClass"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@QubitPi QubitPi force-pushed the Issue818-static-attribute-aggregation branch from ad15684 to 98ed654 Compare June 17, 2019 22:05
* To avoid double binding, {@link Cardinality} is a {@link ElementType#TYPE class-only annotation}.
*/
@Documented
@Target(ElementType.TYPE)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I make Cardinality a class-level only annotation because I though it would be awkward to have a class being annotated and a second person put the same annotation in a relationship again.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How would we handle the scenario of non-relationship dimensions? Navi will have no way to determine the cardinality of those dimensions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right. Based on your other comment, I'll also add ElementType.FIELD and ElementType.METHOD

protected List<Dimension> getAllDimensions() {
return getEntityDictionary().getAllFields(getEntityClass()).stream()
.filter(field -> !AbstractMetric.isMetricField(field, getEntityClass(), getEntityDictionary()))
.filter(field -> getEntityDictionary().isRelation(getEntityClass(), field))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dimensions are not restricted to relationships. They can also be non-metric attributes.

Copy link
Contributor Author

@QubitPi QubitPi Jun 19, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see. I was assuming a dimension was a SQL table but I now think it makes more sense to think of it as a table column (For this I think I need to change the implementation of Dimension a little bit, which I will push on Wed.). I will change this and also add more Target type to Cardinality annotation

private final Class<?> entityClass;

@Getter(value = AccessLevel.PRIVATE)
private final List<Metric> metrics;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should these be Sets?

Copy link
Contributor Author

@QubitPi QubitPi Jun 19, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually don't have preference. I chose List because it supports indexed loop, which in some cases might be helpful. But I can change to Sets

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

List implies the same metric can exist twice. I think a Set is a better constraint.

*
* @return {@code true} if the field is a dimension
*/
public boolean isDimension(String fieldName) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't used anywhere.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right. I was wondering if it can be useful in the future. Do we still want me to remove it?

* To avoid double binding, {@link Cardinality} is a {@link ElementType#TYPE class-only annotation}.
*/
@Documented
@Target(ElementType.TYPE)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How would we handle the scenario of non-relationship dimensions? Navi will have no way to determine the cardinality of those dimensions.

* @return a JPQL formula for computing this {@link Metric} or {@link Optional#empty()} on a
* {@link MetricAggregation simple metric}.
*/
Optional<String> getComputedMetricExpression();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this return the expanded or unexpanded formula?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This returns expanded formula. I have updated javadoc accordingly.

Copy link
Member

@aklish aklish left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to make sure that Elide's code coverage (via coveralls) doesn't go down - so we'll likely need to add more tests once the structure looks correct.

return false;
}

return getAttributeOrRelationAnnotation(cls, annotationClass, EntityBinding.getFieldName(fieldOrMethod))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method can be collapsed to just:

return getAttributeOrRelationAnnotation(cls, annotationClass, EntityBinding.getFieldName(fieldOrMethod)) != null

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right. To get fieldOrMethod used in this line, we probably need to execute extra logic above.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I meant,
return getAttributeOrRelationAnnotation(cls, annotationClass, fieldName) != null

private final Class<?> entityClass;

@Getter(value = AccessLevel.PRIVATE)
private final List<Metric> metrics;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

List implies the same metric can exist twice. I think a Set is a better constraint.

*
* @return {@code true} if the field is a metric field
*/
public static boolean isMetricField(String fieldName, Class<?> containingCls, EntityDictionary entityDictionary) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should try to avoid propagating EntityDictionary to too many classes. It should remain encapsulated inside the Schema only.

Copy link
Contributor Author

@QubitPi QubitPi Jun 20, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok.

*
* @return a {@link Metric}
*/
public static Metric newInstance(String metricField, Class<?> cls, EntityDictionary entityDictionary) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment - keep all of these construction methods in the schema or find a way to not propagate the EntityDictionary so widely.

* @param computedMetricExpression The JPQL expression that represents this metric computation logic; {@code null}
* for {@link MetricAggregation simple metric}
*/
private EntityMetric(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this class? Instead of having an interface, an abstract class, and a concrete class, can we collapse this to an interface and a ConcreteClass?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep

* <p>
* {@link EntityDimension} is thread-safe and can be accessed by multiple threads.
*/
public class EntityDimension extends AbstractDimension {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this class? Instead of having an interface, an abstract class, and a concrete class, can we collapse this to an interface and a ConcreteClass?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still feel like we should combine EntityDimension and AbstractDimension into a single thing.

this.id = id;
}

@FriendlyName
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FriendlyName wouldn't decorate the FactTable - it would decorate a field on a relationship from the Fact Table. It would make sense to decorate country.name with this for example.


@Override
public Optional<String> getFriendlyName() {
return friendlyName == null ? Optional.empty() : Optional.of(friendlyName);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should always be a friendly name. It will fall into one of three categories:

  1. A dimension table has a single attribute with the friendly name annotation. That attribute is the friendly name.
  2. A dimension table has no attribute with the friendly name annotation. We should use its @Id field as the friendly name.
  3. A fact table has a degenerate dimension (an attribute which is also a dimension). The friendly name is the attribute in that case. There should not be an annotation here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@Entity
@Include(rootLevel = true)
@Cardinality
public class CardinalityTestBean {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of creating test beans like this, I think we should try to create a real world model that is intuitive. Let's create a model around PlayerStats for a video game. All the models ideally should make sense in that context.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. Done

@QubitPi QubitPi changed the title AggregationDataStore: Static Attribute Aggregation [WIP] AggregationDataStore: Static Attribute Aggregation Jun 20, 2019
@QubitPi QubitPi force-pushed the Issue818-static-attribute-aggregation branch from f6f85dc to 8eb97e1 Compare June 20, 2019 19:04
@QubitPi QubitPi changed the title [WIP] AggregationDataStore: Static Attribute Aggregation AggregationDataStore: Static Attribute Aggregation Jun 20, 2019
@QubitPi QubitPi changed the title AggregationDataStore: Static Attribute Aggregation [WIP] AggregationDataStore: Static Attribute Aggregation Jun 21, 2019
@QubitPi QubitPi force-pushed the Issue818-static-attribute-aggregation branch from 8ddeb51 to 907b70c Compare June 22, 2019 01:32
@QubitPi QubitPi changed the title [WIP] AggregationDataStore: Static Attribute Aggregation AggregationDataStore: Static Attribute Aggregation Jun 22, 2019
@QubitPi QubitPi force-pushed the Issue818-static-attribute-aggregation branch from dc4513b to 5055f73 Compare June 22, 2019 01:38
@QubitPi QubitPi changed the title AggregationDataStore: Static Attribute Aggregation AggregationDataStore: Static Attribute Aggregation & Jun 26, 2019
@QubitPi QubitPi changed the title AggregationDataStore: Static Attribute Aggregation & AggregationDataStore: Schema Jun 26, 2019
@QubitPi QubitPi force-pushed the Issue818-static-attribute-aggregation branch 2 times, most recently from 3c9da22 to 2a33900 Compare June 27, 2019 20:07
@QubitPi QubitPi force-pushed the Issue818-static-attribute-aggregation branch from 0d68c9a to 8572b05 Compare June 28, 2019 23:14
aklish pushed a commit that referenced this pull request Sep 3, 2019
* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron
aklish pushed a commit that referenced this pull request Sep 3, 2019
* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron
aklish pushed a commit that referenced this pull request Sep 4, 2019
* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation
aklish added a commit that referenced this pull request Sep 6, 2019
* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework
aklish added a commit that referenced this pull request Sep 20, 2019
* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup
hellohanchen pushed a commit to hellohanchen/elide that referenced this pull request Sep 23, 2019
* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron
hellohanchen pushed a commit to hellohanchen/elide that referenced this pull request Sep 26, 2019
* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron
aklish pushed a commit that referenced this pull request Sep 27, 2019
* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments
aklish pushed a commit that referenced this pull request Oct 1, 2019
* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type
aklish pushed a commit that referenced this pull request Oct 7, 2019
* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)
aklish pushed a commit that referenced this pull request Nov 21, 2019
* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView
aklish pushed a commit that referenced this pull request Dec 4, 2019
* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments
@aklish aklish deleted the Issue818-static-attribute-aggregation branch December 6, 2019 22:51
aklish pushed a commit that referenced this pull request Dec 19, 2019
* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView
aklish pushed a commit that referenced this pull request Dec 19, 2019
* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments
aklish pushed a commit that referenced this pull request Jan 17, 2020
* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration
aklish pushed a commit that referenced this pull request Feb 18, 2020
* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration
aklish pushed a commit that referenced this pull request Apr 23, 2020
* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration
aklish pushed a commit that referenced this pull request May 16, 2020
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>
aklish pushed a commit that referenced this pull request May 28, 2020
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>
aklish pushed a commit that referenced this pull request Jul 10, 2020
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>
aklish added a commit that referenced this pull request Jul 24, 2020
* parent a14ccfbb7b558d27799b4e7b1916850519639708
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>

* Fixed issues with rebase

* Finished rebase

* Async ID change from UUID to String and Dynamic Config FIx (#1325)

* Async UUID to String, Dynamic Config NPE

* Update DefaultAsyncQueryDAOTest.java

* TANDS-19093-transactionRegistry-interface (#1332)

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

Co-authored-by: Ramsha Rao <[email protected]>

* add requestId (#1331)

Co-authored-by: aaggarwal <[email protected]>

* [maven-release-plugin] prepare release 5.0.0-pr9

* [maven-release-plugin] prepare for next development iteration

* Introduce QueryResult class for QueryEngine caching (#1333)

* Make QueryEngine cache bypass flag part of Query

* Forming the cache key is not free, so don't a use stub cache

* Add QueryResult class

* Add pageTotals to QueryResult

* Pass page totals through QueryResult instead of Pagination

* Codacy doesn't know @Value makes fields private

* remove missing javadoc warnings (#1337)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Elide 5.x dynamic config standalone (#1259)

* Fix method call, Swagger Doc Update

Co-authored-by: AvaniMakwana <[email protected]>

* Swagger doc update

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* review comments

Co-authored-by: AvaniMakwana <[email protected]>

* Update ElideStandaloneSettings.java

* Update pom.xml

* Update pom.xml

Co-authored-by: moiz arafat <[email protected]>

* addTransaction-removeTransaction (#1338)

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169-changing-CVSS-score

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* making DataStore an abstract class

* making DataStore an abstract class

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* addressing comments

* addressing comments

* addressing comments

* fixing bugs

Co-authored-by: Ramsha Rao <[email protected]>

* Fixed rebase

* Removed old elide example modules

* [maven-release-plugin] prepare release 5.0.0-pr10

* [maven-release-plugin] prepare for next development iteration

* Validation for Model Configs (#1306)

* Dynamic Config Validator

Co-authored-by: rishi-aga <[email protected]>

* Review Comments

* Review Comments

* Use DynamicConfigValidator instead of ElideConfigParser

Co-authored-by: moiz arafat <[email protected]>

* add explicit join (#1364)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Fixes - Honor Doc Version in SwaggerController and Use ISO8601Dates Serde Format in Date Formatting  (#1336)

* misc_fixes

* review comments

* Review Comments

* DyFixes

* DyFixes

* Elide dynamic config model verification (#1354)

* sign & Verify model

* review comments

* typo fix

* indent fix

* review comment

* additional testcases

* revert system exit

* fix codacy

* add return

* add system exit

Co-authored-…
aklish pushed a commit that referenced this pull request Aug 8, 2020
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>
aklish added a commit that referenced this pull request Aug 8, 2020
* parent a14ccfbb7b558d27799b4e7b1916850519639708
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>

* Fixed issues with rebase

* Finished rebase

* Async ID change from UUID to String and Dynamic Config FIx (#1325)

* Async UUID to String, Dynamic Config NPE

* Update DefaultAsyncQueryDAOTest.java

* TANDS-19093-transactionRegistry-interface (#1332)

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

Co-authored-by: Ramsha Rao <[email protected]>

* add requestId (#1331)

Co-authored-by: aaggarwal <[email protected]>

* [maven-release-plugin] prepare release 5.0.0-pr9

* [maven-release-plugin] prepare for next development iteration

* Introduce QueryResult class for QueryEngine caching (#1333)

* Make QueryEngine cache bypass flag part of Query

* Forming the cache key is not free, so don't a use stub cache

* Add QueryResult class

* Add pageTotals to QueryResult

* Pass page totals through QueryResult instead of Pagination

* Codacy doesn't know @Value makes fields private

* remove missing javadoc warnings (#1337)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Elide 5.x dynamic config standalone (#1259)

* Fix method call, Swagger Doc Update

Co-authored-by: AvaniMakwana <[email protected]>

* Swagger doc update

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* review comments

Co-authored-by: AvaniMakwana <[email protected]>

* Update ElideStandaloneSettings.java

* Update pom.xml

* Update pom.xml

Co-authored-by: moiz arafat <[email protected]>

* addTransaction-removeTransaction (#1338)

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169-changing-CVSS-score

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* making DataStore an abstract class

* making DataStore an abstract class

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* addressing comments

* addressing comments

* addressing comments

* fixing bugs

Co-authored-by: Ramsha Rao <[email protected]>

* Fixed rebase

* Removed old elide example modules

* [maven-release-plugin] prepare release 5.0.0-pr10

* [maven-release-plugin] prepare for next development iteration

* Validation for Model Configs (#1306)

* Dynamic Config Validator

Co-authored-by: rishi-aga <[email protected]>

* Review Comments

* Review Comments

* Use DynamicConfigValidator instead of ElideConfigParser

Co-authored-by: moiz arafat <[email protected]>

* add explicit join (#1364)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Fixes - Honor Doc Version in SwaggerController and Use ISO8601Dates Serde Format in Date Formatting  (#1336)

* misc_fixes

* review comments

* Review Comments

* DyFixes

* DyFixes

* Elide dynamic config model verification (#1354)

* sign & Verify model

* review comments

* typo fix

* indent fix

* review comment

* additional testcases

* revert system exit

* fix codacy

* add return

* add system exit

Co-authored-…
aklish pushed a commit that referenced this pull request Sep 22, 2020
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>
aklish added a commit that referenced this pull request Sep 22, 2020
* parent a14ccfbb7b558d27799b4e7b1916850519639708
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>

* Fixed issues with rebase

* Finished rebase

* Async ID change from UUID to String and Dynamic Config FIx (#1325)

* Async UUID to String, Dynamic Config NPE

* Update DefaultAsyncQueryDAOTest.java

* TANDS-19093-transactionRegistry-interface (#1332)

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

Co-authored-by: Ramsha Rao <[email protected]>

* add requestId (#1331)

Co-authored-by: aaggarwal <[email protected]>

* [maven-release-plugin] prepare release 5.0.0-pr9

* [maven-release-plugin] prepare for next development iteration

* Introduce QueryResult class for QueryEngine caching (#1333)

* Make QueryEngine cache bypass flag part of Query

* Forming the cache key is not free, so don't a use stub cache

* Add QueryResult class

* Add pageTotals to QueryResult

* Pass page totals through QueryResult instead of Pagination

* Codacy doesn't know @Value makes fields private

* remove missing javadoc warnings (#1337)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Elide 5.x dynamic config standalone (#1259)

* Fix method call, Swagger Doc Update

Co-authored-by: AvaniMakwana <[email protected]>

* Swagger doc update

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* review comments

Co-authored-by: AvaniMakwana <[email protected]>

* Update ElideStandaloneSettings.java

* Update pom.xml

* Update pom.xml

Co-authored-by: moiz arafat <[email protected]>

* addTransaction-removeTransaction (#1338)

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169-changing-CVSS-score

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* making DataStore an abstract class

* making DataStore an abstract class

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* addressing comments

* addressing comments

* addressing comments

* fixing bugs

Co-authored-by: Ramsha Rao <[email protected]>

* Fixed rebase

* Removed old elide example modules

* [maven-release-plugin] prepare release 5.0.0-pr10

* [maven-release-plugin] prepare for next development iteration

* Validation for Model Configs (#1306)

* Dynamic Config Validator

Co-authored-by: rishi-aga <[email protected]>

* Review Comments

* Review Comments

* Use DynamicConfigValidator instead of ElideConfigParser

Co-authored-by: moiz arafat <[email protected]>

* add explicit join (#1364)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Fixes - Honor Doc Version in SwaggerController and Use ISO8601Dates Serde Format in Date Formatting  (#1336)

* misc_fixes

* review comments

* Review Comments

* DyFixes

* DyFixes

* Elide dynamic config model verification (#1354)

* sign & Verify model

* review comments

* typo fix

* indent fix

* review comment

* additional testcases

* revert system exit

* fix codacy

* add return

* add system exit

Co-authored-…
aklish pushed a commit that referenced this pull request Nov 17, 2020
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>
aklish added a commit that referenced this pull request Nov 17, 2020
* parent a14ccfbb7b558d27799b4e7b1916850519639708
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>

* Fixed issues with rebase

* Finished rebase

* Async ID change from UUID to String and Dynamic Config FIx (#1325)

* Async UUID to String, Dynamic Config NPE

* Update DefaultAsyncQueryDAOTest.java

* TANDS-19093-transactionRegistry-interface (#1332)

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

Co-authored-by: Ramsha Rao <[email protected]>

* add requestId (#1331)

Co-authored-by: aaggarwal <[email protected]>

* [maven-release-plugin] prepare release 5.0.0-pr9

* [maven-release-plugin] prepare for next development iteration

* Introduce QueryResult class for QueryEngine caching (#1333)

* Make QueryEngine cache bypass flag part of Query

* Forming the cache key is not free, so don't a use stub cache

* Add QueryResult class

* Add pageTotals to QueryResult

* Pass page totals through QueryResult instead of Pagination

* Codacy doesn't know @Value makes fields private

* remove missing javadoc warnings (#1337)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Elide 5.x dynamic config standalone (#1259)

* Fix method call, Swagger Doc Update

Co-authored-by: AvaniMakwana <[email protected]>

* Swagger doc update

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* review comments

Co-authored-by: AvaniMakwana <[email protected]>

* Update ElideStandaloneSettings.java

* Update pom.xml

* Update pom.xml

Co-authored-by: moiz arafat <[email protected]>

* addTransaction-removeTransaction (#1338)

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169-changing-CVSS-score

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* making DataStore an abstract class

* making DataStore an abstract class

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* addressing comments

* addressing comments

* addressing comments

* fixing bugs

Co-authored-by: Ramsha Rao <[email protected]>

* Fixed rebase

* Removed old elide example modules

* [maven-release-plugin] prepare release 5.0.0-pr10

* [maven-release-plugin] prepare for next development iteration

* Validation for Model Configs (#1306)

* Dynamic Config Validator

Co-authored-by: rishi-aga <[email protected]>

* Review Comments

* Review Comments

* Use DynamicConfigValidator instead of ElideConfigParser

Co-authored-by: moiz arafat <[email protected]>

* add explicit join (#1364)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Fixes - Honor Doc Version in SwaggerController and Use ISO8601Dates Serde Format in Date Formatting  (#1336)

* misc_fixes

* review comments

* Review Comments

* DyFixes

* DyFixes

* Elide dynamic config model verification (#1354)

* sign & Verify model

* review comments

* typo fix

* indent fix

* review comment

* additional testcases

* revert system exit

* fix codacy

* add return

* add system exit

Co-authored-…
aklish pushed a commit that referenced this pull request Dec 11, 2020
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>
aklish added a commit that referenced this pull request Dec 11, 2020
* parent a14ccfbb7b558d27799b4e7b1916850519639708
author Jack (정환) <[email protected]> 1559678988 -0700
committer Aaron Klish <[email protected]> 1589583449 -0500

Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

[maven-release-plugin] prepare release 5.0.0-pr1

[maven-release-plugin] prepare for next development iteration

Renamed graphQL file to match test (#1002)

[maven-release-plugin] prepare release 5.0.0-pr2

[maven-release-plugin] prepare for next development iteration

Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

function name fixed to enableISO8601Dates (#1052)

Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

Fixed issues with rebase

Add auto configuration for aggregation store (#1087)

* Added autoconfiguration for QueryEngineFactory

* Unified class scanning.  Started cleaning up datastores so they only register the entities they manage

* Full build passes

* Minor cleanup

* Minor refactoring

* Added EntityManagerFactory bean configuratino

* Refactored class scanning for Elide standalone

* Updated spring boot starter pom

* Removed @Entity from all metadata models.  Started cleaning up entity dictionary entity registration

* Broken implementation.  Just checking in so I can revert if needed.

* All tests pass

* Added unit tests

* Minor cleanup

* One more fix

* Fixed broken tests

* Added package include support back

* Class scanning for annotations ignores inherited

* Added a test based on inspection comments

* Inspection comment fix

* Changed initalization of MetadataStore

* More inspection rework

* Turned back on OWASP scanning

* More rework

remove @Inherited (#1092)

Support Non JPA Entity in AggregationDataStore (#1051)

* Create AggregationDataStore module (#845)

* Create AggregationDataStore module

* Address Aaron's comments

* Fix build failure

AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Define QueryEngine Contract (#867)

Fixed rebase on master

SQL Query Engine  (#878)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

Added calcite as a dependency.  Merged in changes for QueryEngine interface

Fixed checkstyle issues

Added basic H2 DB test harness

Started breaking out projections

Moved getValue and setValue from PersistentResource to EntityDictionary

Added basic logic to hydrate entities

Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

Minor cleanup

Refactored HQLFilterOperation to take an alias generator

Added test support for RSQL filter generation. Some cleanup

Added basic support for WHERE clause filtering on the fact table

Added working test for subquery SQL

Added basic join logic for filters

Added a test with a subquery and a filter join

Refactored Schema classes and Query to support metric aggregation SQL expansion

Added group by support

Added logic for ID generation

Added sorting logic and test

Added pagination support and testing

All column references use proper name now for SQL

Removed calcite as a query engine

Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

Added HAVING clause support

Changed Query to take schema instead of entityClass

First pass at cleanup

Fixed checkstyles

Cleanup

Cleanup

Added a complex SQL expression test and fixed bugs

Fixed merge issues.  Added another test.  Added better logging

Fixed bug in pagination SQL generation

* Build is working

* Inspection rework

Add EntityProjection plumbing (#949)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* Removed duplicated Schema class from rebase

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

Hydrate Relationship (#987)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Added basic H2 DB test harness

* Started breaking out projections

* Moved getValue and setValue from PersistentResource to EntityDictionary

* Added basic logic to hydrate entities

* Added FromTable and FromSubquery annotations.  Add explicit exclusion of entity relationship hydration

* Refactored HQLFilterOperation to take an alias generator

* Added test support for RSQL filter generation. Some cleanup

* Added basic support for WHERE clause filtering on the fact table

* Added working test for subquery SQL

* Added basic join logic for filters

* Added a test with a subquery and a filter join

* Refactored Schema classes and Query to support metric aggregation SQL expansion

* Added group by support

* Added logic for ID generation

* Added sorting logic and test

* Added pagination support and testing

* All column references use proper name now for SQL

* Removed calcite as a query engine

* Refactored HQLFilterOperation so it can be used for Having and Where clause generaiton

* Added HAVING clause support

* Changed Query to take schema instead of entityClass

* First pass at cleanup

* Fixed checkstyles

* Cleanup

* Hydrate Relationship

* Cleanup

* Added a complex SQL expression test and fixed bugs

* Fixed merge issues.  Added another test.  Added better logging

* Self-review

* Self-review

* Self-review

* Self-review

* Self-review

* Address comments from @aklish

* Refactor EntityHydrator (#893)

* rebase

* keep Jiaqi's changes

* fix id

* fix maven verify

* Remove HQLFilterOperation

* fix dictionary

* fix SqlEngineTest

* remove unused part

* make codacy happy

* should use getParametrizedType

* address comments

Implement GraphQLEntityProjectionMaker (#986)

* AggregationDataStore: Schema (#846)

* AggregationDataStore: Static Attribute Aggregation

* Address comments

* Implement TimeDimension and all its supporting components

* refactor

* Address comments from @aklish

* Address comments from @aklish && Tests & Javadoc

* Address comments from @aklish

* Address comments from @aklish and @hellohanchen

* Address comments from Aaron

* ToMany is not supported

* Address comments from Aaron

* Initial sketch

PersistentResourceTest now passes

LifeCycleTest tests now pass

More API changes for data store transaction.  Also fixed createObject in persistent resource to take the correct projection

Started to refactor tests

IncludedProcessorTest refactored

Refactored LifeCycleTest

Started refactor on PersistentResourceTest

More refactoring.  Fixed a bug in Resource.toPersistentResource

Only one test failing in PersistentResourceTest

PersistentResourceTests now pass

UpdateOnCreateTests now pass

Added skeleton for translating JSON-API URL path into an EntityProjection

Basic EntityProjectionMaker almost complete

Added ability to merge entity projections by relationship

Added first test for EntityProjectionMaker

Non-working veresion (but clean)

Tests now pass

All EntityProjectioNMaker tests pass

Elide-Core now builds

Added handling of sparse attributes and relationships

Expanding attributes for included entities

Fixed a number of bugs found in IT tests

Fixed some of the EntityProjectionMaker tests

Fixed unit tests

Made temporary modifications to exclude GraphQL (Build now passes)

Added sparse field unit tests for EntityProjectionMaker

* Fixed build issues after rebase

* GraphQL projection maker using document

* Argument handling and fragment check

* Add comments

* Add fragment resolver

* fix typo

* break code into more methods

* remove pagination and sorting

* Removed duplicated Schema class from rebase

* re-arrange keywords

* Address comment

* Add arguments for attribute fields

* Handle arguments

* support partial query, update edges/node logic

* Entity projection with aliases

* Entity projection with aliases (#963)

* Hacked up PersistentResource with new design

* Core now compiles (and tests can run

* EntityProjectionMaker tests pass

* Build now passes (major cleanup still needed

* fix create relationship object using entity

* Add tests passed

* code clean up

* refactor fatcher, fix test cases

* rename keywords

* rebase branch (#12)

* rebased

* Graphql projection refactor (#13)

* fix fragment resolver

* Fix variable resolver

* Wire in entity projection4 json api (#964)

* Fixed DataStore API.  Fixed a lot of the core unit tests

* Checkstyles and more fixes

* Hibernate 5 Tests Pass

* Full build passes

* Wire in entity projection4 json api (#965)

* Initial concept.  No testing changed.

* Core compiles and EntityProjectionMaker tests (original ones) now pass

* Minor edits to TestRequestScope

* Full build passes now

* removed entity dictionary from entity projection

* Pre-inspection cleanup

* minor inspection fixup

* rebase

* Rebased on AggregationDataStore

* clean up extra new lines

* address comments

* Builder pattern

* update comments

* remove projection in entity

* fix jackson

* Hydrate Relationship (#987) (#15)

* Address some codecy comments

* Add comment for partial query

* Reenable tests

* Address comments, refactor alias

* Add test for alias

* swapped test case

* fix get type

Added AggregationDataStore Code (#991)

* Adding testing for aggregation data store

* Debugging integration tests

* Continuing testing work

* AggregationDataStore

* AggregationDataStore testing

* Added more tests

* Aggregation Data Store

* Cleaned up testing code

* Cleaned up code, fixed helper for AggregationDataStore

* end

* Fixed checkstyle, other minor fixes

* fixed comment

* Minor fixes

* Fixed id type issue, added exception for queries with no metrics

Fixed build (#993)

Making TimeDimension an interface (#992)

* [maven-release-plugin] prepare release 5.0.0-pr1

* [maven-release-plugin] prepare for next development iteration

* Renamed graphQL file to match test (#1002)

* [maven-release-plugin] prepare release 5.0.0-pr2

* [maven-release-plugin] prepare for next development iteration

* Add JoinTo annotation (#1006)

* Added JoinTo Annotation

* Added working test

* Added TODO comment for next PR

* Added TODO comment for next PR

* Added Sorting and Filtering support for JoinTo Columns

* Fixed IT tests for Aggregation Data Store

* Moved entityManager creation to happen separately for each query (#1008)

* Moved entityManager creation to happen separately for each query

* Closing EntityManager after each query

* Inspection rework

* Column annotation (#1017)

* Solved column issue and added QueryEngineFactory

* Caching query engine in AggregationDataStore

* Fixed column description

* Update SQLQueryEngine.java (#1019)

* Add SQLMetrix, rearrange packages (#1020)

* Add SQLMetrix, rearrange packages

* address comment

* Manager transacton manually

* Add readonly

* Manager transacton manually (#1021)

* Manager transacton manually

* Add readonly

* Hydrate GraphQL Schema with parameterized attributes (#1018)

* GraphQL schema expose expected argument name and its type for each attribute

* Change empty arguments to unmodifable set

* AggregationStore: Add multiple time grain definitions to schema (#1022)

* Fixed checkstyle warnings and errors.  Separated the Query dimension interface from the Schema dimension interface

* Added skeleton code to convert entity projection arguments into time grains

* Cleanup

* Class renames per inspection comments

* Inspection comments

* some rework

* use getTimeDimension()

* change exception

* Refactor time dimension logic (#1028)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect (#1038)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1026 Add support for @Subselect

* Address comments

* ISSUE-1027 Support join for having clause (#1039)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* ISSUE-1027 Support join for having clause

* View Design

* Add tests and cleanup

* rename annotation

* function name fixed to enableISO8601Dates (#1052)

* fix bugs

* Support for multiple queries at root is added (#1044)

* Support for multiple queries at root is added

* Added test with alias

* comments resolved

* merge annotations

* don't group by view relationship

* Add time grain to GraphQL schema (#1042)

* Added basic plumbing to push attributes from the entity projection down to the QueryEngine

* Added logic to expand SQL time expression in SQLQueryEngine

* Added SQLQueryEngine tests

* Added IT tests

* The AggregationStore now adds graphql parameters for parameterized columns

* Minor refactor

* Inspection rework

* Minor fix

* Support multiple query of same entity with different alias (#1055)

* Support multiple query of same entity with different alias

* add static method to generate keyname for GraphQLProjectionInfo projections

* Remove aliasPartialQuerySameAttribute

* MetadataStore Models (#1068)

* Manager transacton manually

* Add readonly

* some rework

* use getTimeDimension()

* change exception

* Metadatastore models

* Address comments

* address comments

* move root

* fix style check

* SQLQueryTemplate Model (#1073)

* SQLQueryTemplate

* SQLTables

* refactor

* update sql dimension projection

* update sql dimension projection

* clean up dimension projection

* refactor sql components

* aggregatable field rework

* add comments

* rearrange packages

* Add dimension projection back

* fix checkstyle

* Add dictionary

* Simplify MetricFunction and SQLQueryTemplate

* Address comments

* Integrate Metadata Model and SQLQueryTemplate Model (#1083)

* Integrate Metadata Model and SQLQueryTemplate Model

* remove AggregationDictionary and AggregationManager

* Add timezone

* Can only query analyticView

* integrate view with aggregation and metadata

* remove includeField

* remove @view

* Use NonEntityDictionary

* remove id

* revert access changes

* fix JPA entity check

* remove @Entity from analyticViews

* use table name as relationship type id

* revert NonEntitydictinoary

* tiny rework

* Integration tests

* Add jsonapi ittest

* aggregation data store doesn't manage jpa entities

* address comments

fix integration dependencies (#1093)

[maven-release-plugin] prepare release 5.0.0-pr3

[maven-release-plugin] prepare for next development iteration

Fixed elide standalone pom from rebase

Fixed minor bug in rebase

Fixed rebase

Improving class scanning performance for MetadataStore (#1117)

Enable elide5 travis builds (#1129)

* Move repeated @Sql annotations to class level (#1119)

* Turning on travis builds with code coverage for Elide 5.x

* Fixing security issue in spring-boot-web

Co-authored-by: Brutus5000 <[email protected]>

Fix sorting and ambiguous join issue (#1127)

* Added sorting on aggregated metric based on latest elide-5.x

* Fix ambiguity problem

* update comments

* fix codacy

* refactor generateColumnReference

* update comment

* address comments

* test cleanup

* update unittest

* fix elide core alias

* QueryValidatorTest

* EntityProjectionTranslatorTest

* go joinFragment approach

* delete jointrienode

Support no metric query (#1137)

[maven-release-plugin] prepare release 5.0.0-pr4

[maven-release-plugin] prepare for next development iteration

Check dependency injection (#1138)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Adding support for dependency injection of Checks.  Added test injection classes

* Unit tests pass

* Tests pass

* Removed Initializer Concept

Co-authored-by: Brutus5000 <[email protected]>

Fix travis log length (#1140)

* Move repeated @Sql annotations to class level (#1119)

* Fixing OWASP security warning for Tomcat dependency in Spring Web (#1132)

* Removed unnecessary request/response logging (to shorten travis logs)

* Address inspection comments

* Address inspection comments

* Address inspection comments

* Removed logging of graphQL model building to shorten length

* Fixed compilation error

Co-authored-by: Brutus5000 <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr5

[maven-release-plugin] prepare for next development iteration

Refactoring Elide Security Checks (#1144)

Removed UpdateOnCreate.  Refactored AuditLogger, Pagination, & Sorting (#1146)

* Removed UpdateOnCreate.  Refactored AuditLogger

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Inspection rework

* Fixes build

* More inspection rework

* Fix build

Refactor share permission (#1154)

* Refactored Sorting

* Refactored Pagination

* Refactored Pagination

* Pagination refactor builds and tests pass

* Codacy fixes

* Refactored SharePermission to NonTransferable

* Fixed build

* Fixed startup bug

* Fixed codacy and inspection comments

* Update elide-core/src/main/java/com/yahoo/elide/core/EntityDictionary.java

Co-Authored-By: Jon Kilroy <[email protected]>

* Inspection rework

Co-authored-by: Jon Kilroy <[email protected]>

metadata refactor (#1179)

* metadata refactor

* merge table and analyticView

* fix reflection package

* Make Table constrcut its own columns

* table json type alias

* add comment

@Join and JoinPath

add comment

hide non-jpd entities in grpahql

hide joins

refactor hidden

remove ant

remove relationshp, update model (#1186)

Rebased on master

[maven-release-plugin] prepare release 5.0.0-pr6

[maven-release-plugin] prepare for next development iteration

sourceColumn (#1196)

* sourceColumn

* address comment

* change to sourcePath

Cleaning up ElideSettings

Added more test fixes

Fixed a number of broken tests

Build completes

Fixed JSON-API Patch Response

Fixed GraphQL errors.  Added better errors for Forbidden Access Exception.

Minor fix

Added setId to EntityDictionary

Initial version

All test pass except for spring

Build passes

Adding checkstyle comments for classes

Inspection comments

Fixed checkstyle issues

Change the way types are named in the GraphQL schema (#1215)

* name utils

* ready for review

* fix: AggregationDataStoreIntegrationTest#testGraphQLSchema

Label Resolver for Dimension Formula (#1208)

* sql expression to dimension formula

* Metric formula

* Add unit tests

* refacot formula references

* fix comment

* fix comment

* resolve physical column

* refactor dimensionFormula

* cleanup

* label resolver

* cleanup

* refactor

* cleanup

* move code

* labelStore

* labelStore 2

* remove generator

* refactor metric formula

* address comments

* move symbol table into sql query engine

* remove sourceColumn

* update reference expression

* visitor design

* add comments

* add unit join path test

* fix timeDimensionProjection

* fix null value number

* address comments

* fix codacy

Co-authored-by: hchen04 <[email protected]>

Fixing broken javadoc

ColumnProjection Refactor (#1239)

* unify projections

* remove getFunction()

* add table into query template

Co-authored-by: hchen04 <[email protected]>

Refactored metric SQL expansion to occur dynamically at query time ra… (#1270)

* Refactored metric SQL expansion to occur dynamically at query time rather than statically during service initialization

* Update elide-datastore/elide-datastore-aggregation/src/main/java/com/yahoo/elide/datastores/aggregation/queryengines/sql/query/SQLMetricProjection.java

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Remove path logic from aggregation store (#1271)

* Extended query validation to ensure where clause and sorting clauses don't traverse relationships

* Added error check for relationship traversal for Having clauses

* Hacked up logic to remove reference Table resolve references that take a path

* Minor refactoring

* Removed logic to extend join path

* Refactored column projections to use generics

* Removed reference functions from MetricProjection base class

* Refactored so that all SQL generation is done inside the ColumnProjection

* Refactored so all projection happens through projections

* Refactored column projection creation

* Removed unnecessary code

* Added templateQuery to arguments required to generate SQL in column projections

* Fixed codacy issues

Co-authored-by: Aaron Klish <[email protected]>

Added InMemoryStore to list of datastores that run IT tests (#1225)

Co-authored-by: Aaron Klish <[email protected]>

Adding TimeDimensions to Table (#1273)

Elide 5.x async (#1203)

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Adding Async Entity Models

Co-authored-by: moizarafat <[email protected]>

* Adding async module and fixing parent pom version

Co-authored-by: moizarafat <[email protected]>

* Adding async service classes, security and cleanup services

Co-authored-by: moizarafat <[email protected]>

* Adding Copyright License Header to Async module classes

Co-authored-by: moizarafat <[email protected]>

* Using new request scope for datastore transactions

Co-authored-by: moizarafat <[email protected]>

* Remove thread sleep used in testing

Co-authored-by: moizarafat <[email protected]>

* Fixing based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Fixing additional issues based on code quality review from codacy

Co-authored-by: moizarafat <[email protected]>

* Adding getter for AsyncQueryResult

Co-authored-by: moizarafat <[email protected]>

* Reformatting.

Co-authored-by: Abhino <[email protected]>

* Adding mappedBy.

Co-authored-by: Abhino <[email protected]>

* Fixing several review comments - pom, lombok, thread exec

Co-authored-by: moizarafat <[email protected]>

* Fixing codacity errors

Co-authored-by: moizarafat <[email protected]>

* Moving all the DB ORM logic to a utility class for Async

Co-authored-by: moizarafat <[email protected]>

* Remove dependency on number of hosts, delete permission, separate method for interrupttime calculation

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Variable Naming convention.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Making cleaner a separate service.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted params.

Co-authored-by: Abhino <[email protected]>

* Remove unwanted tabs.

Co-authored-by: Abhino <[email protected]>

* Updating order of modules.

Co-authored-by: Abhino <[email protected]>

* Adding cleanup sql.

Co-authored-by: Abhino <[email protected]>

* Adding delete logic.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Resolving build error.

Co-authored-by: Abhino <[email protected]>

* Changing AsyncDbUtil to use Functional Interface

Co-authored-by: moizarafat <[email protected]>

* Removing sleep

Co-authored-by: moizarafat <[email protected]>

* Adding functional interface logic for executeInTransaction

Co-authored-by: moizarafat <[email protected]>

* Adding debug statements for AsyncDbUtil

Co-authored-by: moizarafat <[email protected]>

* Codacity errors, exception handling

Co-authored-by: moizarafat <[email protected]>

* Rebased with elide-5.x and changed User principal logic

Co-authored-by: moizarafat <[email protected]>

* Rebase

Co-authored-by: Abhino <[email protected]>

* Changing CleanerThread to use ExecuteInTransaction

Co-authored-by: moizarafat <[email protected]>

* Removing unused imports

Co-authored-by: moizarafat <[email protected]>

* Delete Method changes

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Overriding hashCode and equals

Co-authored-by: Abhino <[email protected]>

* Removing unused method

Co-authored-by: Abhino <[email protected]>

* Changing response logic for AsyncQuery

Co-authored-by: moizarafat <[email protected]>

* Adding return to delete method

* Resolving Review Comments

Co-authored-by: Abhino <[email protected]>

* Resolve some review comments

Co-authored-by: moizarafat <[email protected]>

* Changing the DAO contract and updating references to DAO

Co-authored-by: moizarafat <[email protected]>

* Removing singletons and extra constructors, simplyfing logic

Co-authored-by: moizarafat <[email protected]>

* Adding default constructor and setters for DefaultDAO

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy error

Co-authored-by: moizarafat <[email protected]>

* Changing Base to use correct obj

Co-authored-by: moizarafat <[email protected]>

* Fixing review comments

Co-authored-by: moizarafat <[email protected]>

* Resolving review comments

Co-authored-by: moizarafat <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-standalone (#1205)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Default enableAsync to False.

Co-authored-by: Abhino <[email protected]>

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Resolving review comments.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Making AsyncQueryDAO configurable

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: abhino <[email protected]>

* Changing call to DefaultAsyncQueryDAO

* Review comments

Co-authored-by: Abhino <[email protected]>

Co-authored-by: Abhino <[email protected]>

* Elide 5.x elide-async integration in elide-spring (#1204)

* Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

Integrating elide-async.

Co-authored-by: Abhino <[email protected]>

* Removing unwanted params.

Co-authored-by: Abhino <[email protected]>

* Binding Cleaner service.

Co-authored-by: Abhino <[email protected]>

* Adding query result retention.

Co-authored-by: Abhino <[email protected]>

* Adding DAO configuration

Co-authored-by: Abhino <[email protected]>

* Checkstyle error

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Review comments

Co-authored-by: Abhino <[email protected]>

* Codacy Error

Co-authored-by: Abhino <[email protected]>

* Changing include type to asyncQuery to avoid conflict

Co-authored-by: moizarafat <[email protected]>

* Sync

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Cleaner Service

Co-authored-by: Abhino <[email protected]>

* Singleton for Executor Service

Co-authored-by: Abhino <[email protected]>

* Sync with Standalone Value

* Changes to change UUID columns type as varchar(36)

* Review Comments

* Review Comments

* Fix review comments

Co-authored-by: Abhino <[email protected]>

* Updating per review comments

* Remove unused import

* Removing status change to Queued

* removing unused import

* prepersist for status

Co-authored-by: moizarafat <[email protected]>
Co-authored-by: avijay <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Moiz Arafat <[email protected]>
Co-authored-by: moizarafat <[email protected]>

Simplify life cycle hooks (#1224)

* Initial version

* Finished code.  Starting to flesh out tests

* Elide core compiles

* Removed CRUDEvent.CrudAction

* Added new test structure for LifeCycleTest

* Fixed bug in Persistent Resource where relationship reads did not tigger a lifecycle event

* Added several LifeCycle Tests

* Added create test for persistent resource

* Added Elide Persistent Resource Update Test

* Added update with change spec test

* Added Relationship Edit test

* Added relationship test

* Fixed checkstyle and compilation errors

* Added remove from collection test

* Added exception tests

* Added delete test

* Added read test

* Fixed checkstyles

* Elide core builds and tests pass

* Fixed graphQL tests

* Full build now passes

* Removed old life cycle annotations

* Minor cleanup

* Fixed codacy issues

* Update README.md

Co-Authored-By: Jon Kilroy <[email protected]>

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Jon Kilroy <[email protected]>

Fixed elide-5.x build

Fixed rebase issues

Turning off retireJS for dependency check

Better errors for missing IDs in Patch Extension Request. (#1278) (#1281)

* Better errors for missing IDs in Patch Extension Request. (#1278)

* Return a better error when handling invalid patch extension requests that are missing IDs

* Added tests

Co-authored-by: Aaron Klish <[email protected]>

* Expect encoded response as array

Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>
Co-authored-by: wcekan <[email protected]>

[maven-release-plugin] prepare release 5.0.0-pr8

[maven-release-plugin] prepare for next development iteration

Patch Extension Lifecycle tests (#1280)

* Patch Extension Lifecycle tests

* Missing check

* Update error body

Co-authored-by: wcekan <[email protected]>

Add version support (#1295)

* Initial non working version

* More changes

* Build passes

* Expanded version param outside entity dictionary

* Plumbed API version up through RequestScope

* Plumbed API version up to controllers and endpoints

* All code minus async written and working

* Code complete

* Build passes

* All tests are passing

* Changed aggregation store Table id to include version.  Metadata will now surface table versions

* Added a swagger IT test with API versions

* Replace empty version string with constant.  Fixed a few bugs in JSON-API parser

* Added graphql type introspection test

* Added graphql type introspection test

* Added spring controller test.  Fixed issue with version header parsing

* Added spring controller test for graphql

* Added swagger controller tests

* Added more happy path versioned tests

* Fixed bug in GraphQLIT

* Added graphQL test for invalid API version

* ADded invalid API version graphql controller test

* Fixed checkstyles

* Added standalone and patch extension tests

* Fixed build errors and codacy errors

Co-authored-by: Aaron Klish <[email protected]>

Migrated spring controllers to use async (#1296)

Co-authored-by: Aaron Klish <[email protected]>

fixes for Async Models lifecycle hooks failing (#1294)

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* elide standalone fixes for lifecycle hooks failing

* Manual Binding of lifecycle hooks

* Manual binding of lifecycle in elide spring

* Refactor

* Review Comments

* Rebase with 5.x

Co-authored-by: moiz arafat <[email protected]>

Implement equals/hashCode and immutability where needed (#1297)

* ColumnProjection must implement equals/hashCode

* Use @Value for SQLTimeDimensionProjection

* Use @Value for Argument

* Use @Value for TimeDimensionGrain

* Use @Value for TimeDimension

* Make Column/Metric immutable

* Table can be immutable

* Use @Value to simplify Query

Changes elide to only inject models annotated with @Inject (#1299)

* Changes elide to only inject models annotated with @Inject

* Codacy fix

Co-authored-by: Aaron Klish <[email protected]>

Enhancemnents to Aggregation Store (#1300)

Co-authored-by: moiz arafat <[email protected]>

QueryEngine result cache (#1279)

* Add QueryEngine cache API

* Remove outdated javadoc text

Elide Async Feature Unit and Integration Tests (#1311)

* Added integration,unit test setup for Async Module with few tests

Co-authored-by: moizarafat <[email protected]>

* Adding Licence headers, Sample entity and working Async test for POST,GET

Co-authored-by: moizarafat <[email protected]>

* Adding additional integration tests

Co-authored-by: moizarafat <[email protected]>

* Adding remaining integration tests and updating javadocs

Co-authored-by: moizarafat <[email protected]>

* Adding all unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating tests to work with Singleton changes

Co-authored-by: moizarafat <[email protected]>

* Modifying tests to work with singleton logic

Co-authored-by: moizarafat <[email protected]>

* Resolving some codacy errors

Co-authored-by: moizarafat <[email protected]>

* Adding DSL for GraphQL and addressing review comments

Co-authored-by: moizarafat <[email protected]>

* Fixing unit tests and checkstyle errors

Co-authored-by: moizarafat <[email protected]>

* Moving tests to new format

Co-authored-by: moizarafat <[email protected]>

* Fixing session not closed error and checkstyle errors

* Fixing imports

Co-authored-by: moizarafat <[email protected]>

* Removing unused method and updating harness

Co-authored-by: moizarafat <[email protected]>

* Updating unit tests

Co-authored-by: moizarafat <[email protected]>

* Updating ResourceConfig for AsyncTest

Co-authored-by: moizarafat <[email protected]>

* Moving logic for resource config to new test binder

Co-authored-by: moizarafat <[email protected]>

* Adding bindFactory logic for async services

Co-authored-by: moizarafat <[email protected]>

* Fixing IT

* Fixing IT

Co-authored-by: Abhino <[email protected]>

* Adding Remaining integration tests

Co-authored-by: moizarafat <[email protected]>

* Consolidating filter logic for integration tests

Co-authored-by: moizarafat <[email protected]>

* Fixing legacy Hibernate entity manager store (so it doesn't recycle the entity manager

* Adding additional integration tests for Standalone and Spring boot

Co-authored-by: moizarafat <[email protected]>

* Fixing codacy errors

Co-authored-by: moizarafat <[email protected]>

* Review Comments

Co-authored-by: abhino <[email protected]>

Co-authored-by: avijay <[email protected]>
Co-authored-by: moizarafat <[email protected]>
Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: Aaron Klish <[email protected]>

in memory compilation integrated with dynamic config helpers (#1255)

* Rebase against 5.x

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* pom fix

Co-authored-by: Ayeswarya <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Merging 1220

Co-authored-by: rishi-aga <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Spring Boot Changes

Co-authored-by: Ayeswarya <[email protected]>

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

* Update DynamicConfigTest.java

* Review Comments

Co-authored-by: Ayeswarya <[email protected]>

Co-authored-by: moiz arafat <[email protected]>
Co-authored-by: AvaniMakwana <[email protected]>
Co-authored-by: rishi-aga <[email protected]>

* Fixed issues with rebase

* Finished rebase

* Async ID change from UUID to String and Dynamic Config FIx (#1325)

* Async UUID to String, Dynamic Config NPE

* Update DefaultAsyncQueryDAOTest.java

* TANDS-19093-transactionRegistry-interface (#1332)

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-transactionRegistry-interface

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

* TANDS-19093-fixing-bugs

Co-authored-by: Ramsha Rao <[email protected]>

* add requestId (#1331)

Co-authored-by: aaggarwal <[email protected]>

* [maven-release-plugin] prepare release 5.0.0-pr9

* [maven-release-plugin] prepare for next development iteration

* Introduce QueryResult class for QueryEngine caching (#1333)

* Make QueryEngine cache bypass flag part of Query

* Forming the cache key is not free, so don't a use stub cache

* Add QueryResult class

* Add pageTotals to QueryResult

* Pass page totals through QueryResult instead of Pagination

* Codacy doesn't know @Value makes fields private

* remove missing javadoc warnings (#1337)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Elide 5.x dynamic config standalone (#1259)

* Fix method call, Swagger Doc Update

Co-authored-by: AvaniMakwana <[email protected]>

* Swagger doc update

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* update pom.xml

Co-authored-by: AvaniMakwana <[email protected]>

* review comments

Co-authored-by: AvaniMakwana <[email protected]>

* Update ElideStandaloneSettings.java

* Update pom.xml

* Update pom.xml

Co-authored-by: moiz arafat <[email protected]>

* addTransaction-removeTransaction (#1338)

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169

* TANDS-19169-changing-CVSS-score

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addTransaction-removeTransaction

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* addressing-comments

* making DataStore an abstract class

* making DataStore an abstract class

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* adding-transaction-id to transaction implementations

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* fixing bugs

* addressing comments

* addressing comments

* addressing comments

* fixing bugs

Co-authored-by: Ramsha Rao <[email protected]>

* Fixed rebase

* Removed old elide example modules

* [maven-release-plugin] prepare release 5.0.0-pr10

* [maven-release-plugin] prepare for next development iteration

* Validation for Model Configs (#1306)

* Dynamic Config Validator

Co-authored-by: rishi-aga <[email protected]>

* Review Comments

* Review Comments

* Use DynamicConfigValidator instead of ElideConfigParser

Co-authored-by: moiz arafat <[email protected]>

* add explicit join (#1364)

Co-authored-by: Chandrasekar Rajasekar <[email protected]>

* Fixes - Honor Doc Version in SwaggerController and Use ISO8601Dates Serde Format in Date Formatting  (#1336)

* misc_fixes

* review comments

* Review Comments

* DyFixes

* DyFixes

* Elide dynamic config model verification (#1354)

* sign & Verify model

* review comments

* typo fix

* indent fix

* review comment

* additional testcases

* revert system exit

* fix codacy

* add return

* add system exit

Co-authored-…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants