├── .github └── workflows │ └── gradleBuild.yml ├── .gitignore ├── build.gradle.kts ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── license.txt ├── markdownSources ├── chronoDb.png ├── chronoGraph.png ├── chronoSphere.png ├── chronosDeploymentOptions.png └── chronosProject.png ├── org.chronos.chronodb.api ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── chronos │ │ │ └── chronodb │ │ │ ├── api │ │ │ ├── BackupManager.java │ │ │ ├── Branch.java │ │ │ ├── BranchHeadStatistics.java │ │ │ ├── BranchManager.java │ │ │ ├── ChangeSetEntry.java │ │ │ ├── ChronoDB.java │ │ │ ├── ChronoDBConstants.java │ │ │ ├── ChronoDBFactory.java │ │ │ ├── ChronoDBFeatures.java │ │ │ ├── ChronoDBStatistics.java │ │ │ ├── ChronoDBTransaction.java │ │ │ ├── CommitMetadataFilter.java │ │ │ ├── Dateback.java │ │ │ ├── DatebackManager.java │ │ │ ├── DumpOption.java │ │ │ ├── DuplicateVersionEliminationMode.java │ │ │ ├── IndexBuilder.kt │ │ │ ├── IndexManager.kt │ │ │ ├── MaintenanceManager.java │ │ │ ├── NullSortPosition.kt │ │ │ ├── Order.java │ │ │ ├── PutOption.java │ │ │ ├── SecondaryIndex.kt │ │ │ ├── SerializationManager.java │ │ │ ├── Sort.kt │ │ │ ├── StatisticsManager.java │ │ │ ├── TextCompare.kt │ │ │ ├── TransactionSource.java │ │ │ ├── builder │ │ │ │ ├── database │ │ │ │ │ ├── ChronoDBBackendBuilder.java │ │ │ │ │ ├── ChronoDBBaseBuilder.java │ │ │ │ │ ├── ChronoDBFinalizableBuilder.java │ │ │ │ │ ├── ChronoDBPropertyFileBuilder.java │ │ │ │ │ └── spi │ │ │ │ │ │ ├── ChronoDBBackendProvider.java │ │ │ │ │ │ └── TestSuitePlugin.java │ │ │ │ ├── query │ │ │ │ │ ├── FinalizableQueryBuilder.java │ │ │ │ │ ├── QueryBaseBuilder.java │ │ │ │ │ ├── QueryBuilder.java │ │ │ │ │ ├── QueryBuilderFinalizer.java │ │ │ │ │ ├── QueryBuilderStarter.java │ │ │ │ │ └── WhereBuilder.java │ │ │ │ └── transaction │ │ │ │ │ └── ChronoDBTransactionBuilder.java │ │ │ ├── conflict │ │ │ │ ├── AtomicConflict.java │ │ │ │ └── ConflictResolutionStrategy.java │ │ │ ├── dump │ │ │ │ ├── ChronoConverter.java │ │ │ │ ├── ChronoDBDumpFormat.java │ │ │ │ ├── IncrementalBackupInfo.java │ │ │ │ ├── IncrementalBackupResult.java │ │ │ │ └── annotations │ │ │ │ │ └── ChronosExternalizable.java │ │ │ ├── exceptions │ │ │ │ ├── CacheGetResultNotPresentException.java │ │ │ │ ├── ChronoDBBackupException.java │ │ │ │ ├── ChronoDBBranchingException.java │ │ │ │ ├── ChronoDBCommitConflictException.java │ │ │ │ ├── ChronoDBCommitException.java │ │ │ │ ├── ChronoDBCommitMetadataRejectedException.java │ │ │ │ ├── ChronoDBConfigurationException.java │ │ │ │ ├── ChronoDBException.java │ │ │ │ ├── ChronoDBIndexingException.java │ │ │ │ ├── ChronoDBQuerySyntaxException.java │ │ │ │ ├── ChronoDBSerializationException.java │ │ │ │ ├── ChronoDBStorageBackendException.java │ │ │ │ ├── ChronoDBTransactionException.java │ │ │ │ ├── ChronoTransactionClosedException.java │ │ │ │ ├── ChronosBuildVersionConflictException.java │ │ │ │ ├── DatebackException.java │ │ │ │ ├── IndexerConflictException.java │ │ │ │ ├── InvalidIndexAccessException.java │ │ │ │ ├── InvalidTransactionBranchException.java │ │ │ │ ├── InvalidTransactionTimestampException.java │ │ │ │ ├── JdbcTableException.java │ │ │ │ ├── TransactionIsReadOnlyException.java │ │ │ │ ├── UnknownIndexException.java │ │ │ │ ├── UnknownKeyspaceException.java │ │ │ │ └── ValueTypeMismatchException.java │ │ │ ├── indexing │ │ │ │ ├── DoubleIndexer.java │ │ │ │ ├── Indexer.java │ │ │ │ ├── LongIndexer.java │ │ │ │ └── StringIndexer.java │ │ │ ├── key │ │ │ │ ├── ChronoIdentifier.java │ │ │ │ ├── QualifiedKey.java │ │ │ │ └── TemporalKey.java │ │ │ ├── kotlin │ │ │ │ └── ReadWriteAutoLockableExtensions.kt │ │ │ └── query │ │ │ │ ├── Condition.java │ │ │ │ ├── ContainmentCondition.java │ │ │ │ ├── DoubleContainmentCondition.java │ │ │ │ ├── LongContainmentCondition.java │ │ │ │ ├── NumberCondition.java │ │ │ │ ├── StringCondition.java │ │ │ │ └── StringContainmentCondition.java │ │ │ ├── inmemory │ │ │ ├── InMemoryBackupManager.java │ │ │ ├── InMemoryBranchManager.java │ │ │ ├── InMemoryChronoDB.java │ │ │ ├── InMemoryChronoDBConfiguration.java │ │ │ ├── InMemoryCommitMetadataStore.java │ │ │ ├── InMemoryDatebackManager.java │ │ │ ├── InMemoryFeatures.java │ │ │ ├── InMemoryIndexManagerBackend.java │ │ │ ├── InMemoryMaintenanceManager.java │ │ │ ├── InMemorySerializationManager.java │ │ │ ├── InMemoryStatisticsManager.java │ │ │ ├── InMemoryTKVS.java │ │ │ ├── IndexEntry.java │ │ │ ├── IndexKey.java │ │ │ ├── RawInMemoryIndexCursor.kt │ │ │ ├── TemporalInMemoryMatrix.java │ │ │ ├── builder │ │ │ │ ├── ChronoDBInMemoryBuilder.java │ │ │ │ └── ChronoDBInMemoryBuilderImpl.java │ │ │ └── provider │ │ │ │ ├── InMemoryChronoDBBackendProvider.java │ │ │ │ └── InMemoryChronoDBTestSuitePlugin.java │ │ │ └── internal │ │ │ ├── api │ │ │ ├── BranchEventListener.java │ │ │ ├── BranchInternal.java │ │ │ ├── BranchManagerInternal.java │ │ │ ├── CacheType.kt │ │ │ ├── ChronoDBConfiguration.java │ │ │ ├── ChronoDBFactoryInternal.java │ │ │ ├── ChronoDBInternal.java │ │ │ ├── CommitMetadataStore.java │ │ │ ├── CommitTimestampProvider.java │ │ │ ├── DatebackManagerInternal.java │ │ │ ├── GetResult.java │ │ │ ├── MutableTransactionConfiguration.java │ │ │ ├── Period.java │ │ │ ├── StatisticsManagerInternal.java │ │ │ ├── TemporalDataMatrix.java │ │ │ ├── TemporalKeyValueStore.java │ │ │ ├── TransactionConfigurationInternal.java │ │ │ ├── cache │ │ │ │ ├── CacheGetResult.java │ │ │ │ └── ChronoDBCache.java │ │ │ ├── dateback │ │ │ │ └── log │ │ │ │ │ ├── DatebackLogger.java │ │ │ │ │ ├── DatebackOperation.java │ │ │ │ │ ├── IInjectEntriesOperation.java │ │ │ │ │ ├── IPurgeCommitsOperation.java │ │ │ │ │ ├── IPurgeEntryOperation.java │ │ │ │ │ ├── IPurgeKeyOperation.java │ │ │ │ │ ├── IPurgeKeyspaceOperation.java │ │ │ │ │ ├── ITransformCommitOperation.java │ │ │ │ │ ├── ITransformValuesOperation.java │ │ │ │ │ └── IUpdateCommitMetadataOperation.java │ │ │ ├── index │ │ │ │ ├── ChronoIndexDocument.java │ │ │ │ ├── ChronoIndexDocumentModifications.java │ │ │ │ ├── DocumentAddition.java │ │ │ │ ├── DocumentBasedIndexManagerBackend.java │ │ │ │ ├── DocumentDeletion.java │ │ │ │ ├── DocumentValidityTermination.java │ │ │ │ └── IndexManagerInternal.kt │ │ │ ├── migration │ │ │ │ ├── ChronosMigration.java │ │ │ │ ├── MigrationChain.java │ │ │ │ └── annotations │ │ │ │ │ └── Migration.java │ │ │ ├── query │ │ │ │ ├── ChronoDBQuery.java │ │ │ │ ├── QueryManager.java │ │ │ │ ├── QueryOptimizer.java │ │ │ │ ├── QueryParser.java │ │ │ │ ├── QueryTokenStream.java │ │ │ │ └── searchspec │ │ │ │ │ ├── ContainmentDoubleSearchSpecification.java │ │ │ │ │ ├── ContainmentLongSearchSpecification.java │ │ │ │ │ ├── ContainmentSearchSpecification.java │ │ │ │ │ ├── ContainmentStringSearchSpecification.java │ │ │ │ │ ├── DoubleSearchSpecification.java │ │ │ │ │ ├── LongSearchSpecification.java │ │ │ │ │ ├── SearchSpecification.java │ │ │ │ │ └── StringSearchSpecification.java │ │ │ └── stream │ │ │ │ ├── ChronoDBEntry.java │ │ │ │ ├── CloseableIterator.java │ │ │ │ ├── ObjectInput.java │ │ │ │ └── ObjectOutput.java │ │ │ ├── impl │ │ │ ├── BranchHeadStatisticsImpl.java │ │ │ ├── BranchImpl.java │ │ │ ├── BranchMetadata.java │ │ │ ├── BranchMetadata2.java │ │ │ ├── ChangeSetEntryImpl.java │ │ │ ├── ChronoDBBaseConfiguration.java │ │ │ ├── ConflictResolutionStrategyLoader.java │ │ │ ├── DefaultTransactionConfiguration.java │ │ │ ├── IBranchMetadata.java │ │ │ ├── MatrixUtils.java │ │ │ ├── SortImpl.kt │ │ │ ├── base │ │ │ │ └── builder │ │ │ │ │ └── database │ │ │ │ │ └── service │ │ │ │ │ └── ChronoDBBackendProviderService.java │ │ │ ├── builder │ │ │ │ ├── database │ │ │ │ │ ├── AbstractChronoDBBuilder.java │ │ │ │ │ ├── AbstractChronoDBFinalizableBuilder.java │ │ │ │ │ ├── ChronoDBBaseBuilderImpl.java │ │ │ │ │ ├── ChronoDBFactoryImpl.java │ │ │ │ │ └── ChronoDBPropertyFileBuilderImpl.java │ │ │ │ ├── query │ │ │ │ │ ├── AbstractFinalizableQueryBuilder.java │ │ │ │ │ ├── StandardQueryBuilder.java │ │ │ │ │ ├── StandardQueryBuilderFinalizer.java │ │ │ │ │ └── StandardQueryTokenStream.java │ │ │ │ └── transaction │ │ │ │ │ └── DefaultTransactionBuilder.java │ │ │ ├── cache │ │ │ │ ├── CacheGetResultImpl.java │ │ │ │ ├── CacheStatisticsImpl.java │ │ │ │ ├── bogus │ │ │ │ │ └── ChronoDBBogusCache.java │ │ │ │ ├── headfirst │ │ │ │ │ ├── CacheRow.kt │ │ │ │ │ ├── EvictionOrderKey.kt │ │ │ │ │ └── HeadFirstCache.kt │ │ │ │ ├── mosaic │ │ │ │ │ ├── GetResultComparator.java │ │ │ │ │ ├── MosaicCache.java │ │ │ │ │ └── MosaicRow.java │ │ │ │ └── util │ │ │ │ │ └── lru │ │ │ │ │ ├── DefaultUsageRegistry.java │ │ │ │ │ ├── FakeUsageRegistry.java │ │ │ │ │ ├── RangedGetResultUsageRegistry.java │ │ │ │ │ └── UsageRegistry.java │ │ │ ├── conflict │ │ │ │ ├── AncestorFetcher.java │ │ │ │ ├── AtomicConflictImpl.java │ │ │ │ └── strategies │ │ │ │ │ ├── DoNotMergeStrategy.java │ │ │ │ │ ├── OverwriteWithSourceStrategy.java │ │ │ │ │ └── OverwriteWithTargetStrategy.java │ │ │ ├── dateback │ │ │ │ ├── AbstractDatebackManager.java │ │ │ │ ├── DatebackImpl.java │ │ │ │ └── log │ │ │ │ │ ├── AbstractDatebackOperation.java │ │ │ │ │ ├── InjectEntriesOperation.java │ │ │ │ │ ├── PurgeCommitsOperation.java │ │ │ │ │ ├── PurgeEntryOperation.java │ │ │ │ │ ├── PurgeKeyOperation.java │ │ │ │ │ ├── PurgeKeyspaceOperation.java │ │ │ │ │ ├── TransformCommitOperation.java │ │ │ │ │ ├── TransformValuesOfKeyspaceOperation.java │ │ │ │ │ ├── TransformValuesOperation.java │ │ │ │ │ ├── UpdateCommitMetadataOperation.java │ │ │ │ │ └── v2 │ │ │ │ │ └── TransformCommitOperation2.java │ │ │ ├── dump │ │ │ │ ├── ChronoDBDumpUtil.java │ │ │ │ ├── CommitMetadataMap.java │ │ │ │ ├── ConverterRegistry.java │ │ │ │ ├── DumpOptions.java │ │ │ │ ├── base │ │ │ │ │ ├── ChronoDBDump.java │ │ │ │ │ └── ChronoDBDumpElement.java │ │ │ │ ├── entry │ │ │ │ │ ├── ChronoDBDumpBinaryEntry.java │ │ │ │ │ ├── ChronoDBDumpEntry.java │ │ │ │ │ └── ChronoDBDumpPlainEntry.java │ │ │ │ ├── incremental │ │ │ │ │ └── ChunkDumpMetadata.java │ │ │ │ └── meta │ │ │ │ │ ├── BranchDumpMetadata.java │ │ │ │ │ ├── ChronoDBDumpMetadata.java │ │ │ │ │ ├── CommitDumpMetadata.java │ │ │ │ │ ├── IIndexerDumpMetadata.java │ │ │ │ │ ├── IndexerDumpMetadata.java │ │ │ │ │ ├── IndexerDumpMetadataV2.java │ │ │ │ │ ├── SchemaValidatorMetadata.java │ │ │ │ │ └── dateback │ │ │ │ │ ├── DatebackLog.java │ │ │ │ │ ├── InjectEntriesOperationLog.java │ │ │ │ │ ├── PurgeCommitsOperationLog.java │ │ │ │ │ ├── PurgeEntryOperationLog.java │ │ │ │ │ ├── PurgeKeyOperationLog.java │ │ │ │ │ ├── PurgeKeyspaceOperationLog.java │ │ │ │ │ ├── TransformCommitOperationLog.java │ │ │ │ │ ├── TransformCommitOperationLog2.java │ │ │ │ │ ├── TransformValuesOfKeyspaceOperationLog.java │ │ │ │ │ ├── TransformValuesOperationLog.java │ │ │ │ │ └── UpdateCommitMetadataOperationLog.java │ │ │ ├── engines │ │ │ │ └── base │ │ │ │ │ ├── AbstractBackupManager.java │ │ │ │ │ ├── AbstractBranchManager.java │ │ │ │ │ ├── AbstractChronoDB.java │ │ │ │ │ ├── AbstractCommitMetadataStore.java │ │ │ │ │ ├── AbstractDocumentBasedIndexManagerBackend.java │ │ │ │ │ ├── AbstractStatisticsManager.java │ │ │ │ │ ├── AbstractTemporalDataMatrix.java │ │ │ │ │ ├── AbstractTemporalKeyValueStore.java │ │ │ │ │ ├── BranchDirectoryNameResolver.java │ │ │ │ │ ├── ChangeSet.java │ │ │ │ │ ├── ChronosInternalCommitMetadata.java │ │ │ │ │ ├── CommitTimestampProviderImpl.kt │ │ │ │ │ ├── KeyspaceMetadata.java │ │ │ │ │ ├── StandardChronoDBTransaction.java │ │ │ │ │ ├── TemporalKeyValueStoreBase.java │ │ │ │ │ ├── ThreadSafeChronoDBTransaction.java │ │ │ │ │ └── WriteAheadLogToken.java │ │ │ ├── index │ │ │ │ ├── AbstractIndexManager.kt │ │ │ │ ├── ChronoIndexDocumentImpl.java │ │ │ │ ├── ChronoIndexDocumentModificationsImpl.java │ │ │ │ ├── DocumentAdditionImpl.java │ │ │ │ ├── DocumentBasedIndexManager.java │ │ │ │ ├── DocumentDeletionImpl.java │ │ │ │ ├── DocumentValidityTerminationImpl.java │ │ │ │ ├── IndexManagerUtils.kt │ │ │ │ ├── IndexValuesComparator.kt │ │ │ │ ├── IndexerWorkloadSorter.java │ │ │ │ ├── IndexingOption.kt │ │ │ │ ├── SecondaryIndexImpl.kt │ │ │ │ ├── StandardIndexingOption.kt │ │ │ │ ├── cursor │ │ │ │ │ ├── BasicIndexScanCursor.kt │ │ │ │ │ ├── DeltaResolvingScanCursor.kt │ │ │ │ │ ├── FilteringScanCursor.kt │ │ │ │ │ ├── IndexScanCursor.kt │ │ │ │ │ ├── IteratorWrappingIndexScanCursor.kt │ │ │ │ │ └── RawIndexCursor.kt │ │ │ │ ├── diff │ │ │ │ │ ├── IndexValueDiff.java │ │ │ │ │ ├── IndexingUtils.java │ │ │ │ │ └── MutableIndexValueDiff.java │ │ │ │ ├── querycache │ │ │ │ │ ├── ChronoIndexQueryCache.java │ │ │ │ │ ├── LRUIndexQueryCache.java │ │ │ │ │ └── NoIndexQueryCache.java │ │ │ │ ├── setview │ │ │ │ │ ├── SetView.java │ │ │ │ │ └── SetViewImpl.java │ │ │ │ └── tree │ │ │ │ │ ├── IndexChanges.kt │ │ │ │ │ ├── IndexTree.kt │ │ │ │ │ ├── IndexTreeImpl.kt │ │ │ │ │ └── IndexTreeNode.kt │ │ │ ├── migration │ │ │ │ ├── MigrationChainImpl.java │ │ │ │ ├── MigrationClassComparator.java │ │ │ │ └── MigrationClassUtil.java │ │ │ ├── query │ │ │ │ ├── AbstractSearchSpecification.java │ │ │ │ ├── ContainmentDoubleSearchSpecificationImpl.java │ │ │ │ ├── ContainmentLongSearchSpecificationImpl.java │ │ │ │ ├── ContainmentStringSearchSpecificationImpl.java │ │ │ │ ├── DoubleSearchSpecificationImpl.java │ │ │ │ ├── LongSearchSpecificationImpl.java │ │ │ │ ├── StandardQueryManager.java │ │ │ │ ├── StringSearchSpecificationImpl.java │ │ │ │ ├── TextMatchMode.java │ │ │ │ ├── condition │ │ │ │ │ ├── AbstractCondition.java │ │ │ │ │ ├── EqualsCondition.java │ │ │ │ │ ├── NegatedCondition.java │ │ │ │ │ ├── NegatedNumberCondition.java │ │ │ │ │ ├── NegatedStringCondition.java │ │ │ │ │ ├── NotEqualsCondition.java │ │ │ │ │ ├── containment │ │ │ │ │ │ ├── DoubleWithinSetCondition.java │ │ │ │ │ │ ├── LongWithinSetCondition.java │ │ │ │ │ │ ├── SetWithoutDoubleCondition.java │ │ │ │ │ │ ├── SetWithoutLongCondition.java │ │ │ │ │ │ ├── SetWithoutStringCondition.java │ │ │ │ │ │ └── StringWithinSetCondition.java │ │ │ │ │ ├── number │ │ │ │ │ │ ├── GreaterThanCondition.java │ │ │ │ │ │ ├── GreaterThanOrEqualToCondition.java │ │ │ │ │ │ ├── LessThanCondition.java │ │ │ │ │ │ └── LessThanOrEqualToCondition.java │ │ │ │ │ └── string │ │ │ │ │ │ ├── ContainsCondition.java │ │ │ │ │ │ ├── EndsWithCondition.java │ │ │ │ │ │ ├── MatchesRegexCondition.java │ │ │ │ │ │ ├── NotContainsCondition.java │ │ │ │ │ │ ├── NotEndsWithCondition.java │ │ │ │ │ │ ├── NotMatchesRegexCondition.java │ │ │ │ │ │ ├── NotStartsWithCondition.java │ │ │ │ │ │ └── StartsWithCondition.java │ │ │ │ ├── optimizer │ │ │ │ │ └── StandardQueryOptimizer.java │ │ │ │ └── parser │ │ │ │ │ ├── StandardQueryParser.java │ │ │ │ │ ├── ast │ │ │ │ │ ├── BinaryOperatorElement.java │ │ │ │ │ ├── BinaryQueryOperator.java │ │ │ │ │ ├── ChronoDBQueryImpl.java │ │ │ │ │ ├── DoubleWhereElement.java │ │ │ │ │ ├── LongWhereElement.java │ │ │ │ │ ├── NotElement.java │ │ │ │ │ ├── QueryElement.java │ │ │ │ │ ├── SetDoubleWhereElement.java │ │ │ │ │ ├── SetLongWhereElement.java │ │ │ │ │ ├── SetStringWhereElement.java │ │ │ │ │ ├── StringWhereElement.java │ │ │ │ │ └── WhereElement.java │ │ │ │ │ └── token │ │ │ │ │ ├── AndToken.java │ │ │ │ │ ├── BeginToken.java │ │ │ │ │ ├── EndOfInputToken.java │ │ │ │ │ ├── EndToken.java │ │ │ │ │ ├── KeyspaceToken.java │ │ │ │ │ ├── NotToken.java │ │ │ │ │ ├── OrToken.java │ │ │ │ │ ├── QueryToken.java │ │ │ │ │ └── WhereToken.java │ │ │ ├── stream │ │ │ │ ├── AbstractCloseableIterator.java │ │ │ │ ├── ConcatenatedCloseableIterator.java │ │ │ │ ├── TransformingCloseableIterator.java │ │ │ │ └── entry │ │ │ │ │ └── ChronoDBEntryImpl.java │ │ │ └── temporal │ │ │ │ ├── ChronoIdentifierImpl.java │ │ │ │ ├── GetResultImpl.java │ │ │ │ ├── InverseUnqualifiedTemporalKey.java │ │ │ │ ├── PeriodImpl.java │ │ │ │ ├── QualifiedKeyImpl.java │ │ │ │ ├── TemporalKeyImpl.java │ │ │ │ ├── UnqualifiedTemporalEntry.java │ │ │ │ └── UnqualifiedTemporalKey.java │ │ │ └── util │ │ │ ├── ChronosFileUtils.java │ │ │ ├── DataMatrixUtil.java │ │ │ ├── ImmutableMapEntry.java │ │ │ ├── IteratorUtils.java │ │ │ ├── KeySetModifications.java │ │ │ ├── MultiMapUtil.java │ │ │ ├── NavigableMapUtils.java │ │ │ ├── Quadruple.java │ │ │ ├── ThreadBound.java │ │ │ └── concurrent │ │ │ └── ResolvedFuture.java │ ├── kotlin │ │ └── org │ │ │ └── chronos │ │ │ └── chronodb │ │ │ └── internal │ │ │ └── impl │ │ │ └── dump │ │ │ └── incremental │ │ │ └── CibFileReader.kt │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.chronos.chronodb.api.builder.database.spi.ChronoDBBackendProvider │ └── test │ ├── java │ └── org │ │ └── chronos │ │ └── chronodb │ │ └── test │ │ ├── _suite │ │ └── ChronoDBTestSuite.java │ │ ├── base │ │ ├── AllBackendsTest.java │ │ ├── AllChronoDBBackendsTest.java │ │ ├── ChronoDBUnitTest.java │ │ ├── InstantiateChronosWith.java │ │ ├── InstantiateChronosWithRepeatable.java │ │ └── TestMethodExtraPropertiesTest.java │ │ └── cases │ │ ├── builder │ │ ├── ChronoDBConfigurationTest.java │ │ └── ChronoDBCreationTest.java │ │ ├── cache │ │ ├── CacheGetResultTest.java │ │ ├── CachedTemporalKeyValueStoreTest.java │ │ ├── MutableValuesCacheTest.java │ │ ├── mosaic │ │ │ ├── HeadFirstCacheTest.kt │ │ │ ├── MosaicCacheTest.java │ │ │ └── MosaicRowTest.java │ │ ├── query │ │ │ └── QueryCacheTest.java │ │ └── util │ │ │ └── lru │ │ │ └── UsageRegistryTest.java │ │ ├── conflict │ │ ├── AtomicConflictTest.java │ │ ├── CommitConflictIntegrationTest.java │ │ ├── ConflictResolutionStrategyLoaderTest.java │ │ └── DefaultCommitConflictStrategiesTest.java │ │ ├── engine │ │ ├── branching │ │ │ ├── BranchCreationTest.java │ │ │ ├── BranchDeletionTest.java │ │ │ ├── BranchHistoryTest.kt │ │ │ └── BranchSecondaryIndexingTest.java │ │ ├── commitmetadata │ │ │ ├── BasicCommitMetadataTest.java │ │ │ ├── CountCommitsTest.java │ │ │ ├── GetChangesAtCommitTimestampsTest.java │ │ │ ├── GetCommitsBeforeAfterAroundTest.java │ │ │ ├── GetCommitsBetweenPagedTest.java │ │ │ └── GetCommitsBetweenTest.java │ │ ├── dateback │ │ │ ├── BasicDatebackTest.java │ │ │ └── RolloverDatebackTest.java │ │ ├── dbdump │ │ │ ├── DBDumpTest.java │ │ │ └── DumpUtilsTest.java │ │ ├── indexing │ │ │ ├── IndexDocumentDeleteTest.java │ │ │ ├── IndexMatchModesTest.java │ │ │ ├── IndexOverwriteTest.java │ │ │ ├── IndexingTest.java │ │ │ ├── MultiValueIndexingTest.java │ │ │ ├── NegatedIndexQueryTest.java │ │ │ ├── NumericIndexingTest.java │ │ │ ├── diff │ │ │ │ ├── DummyIndex.java │ │ │ │ ├── IndexingUtilsTest.java │ │ │ │ └── MutableIndexValueDiffTest.java │ │ │ └── tree │ │ │ │ └── IndexTreeTest.kt │ │ ├── keyspace │ │ │ ├── KeySetTest.kt │ │ │ └── KeyspaceTest.java │ │ ├── maintenance │ │ │ └── rollover │ │ │ │ └── RolloverTest.java │ │ ├── query │ │ │ ├── BasicQueryTest.java │ │ │ ├── ContainmentQueryTest.java │ │ │ ├── DeltaResolvingScanCursorTest.kt │ │ │ ├── IndexScanQueryTest.kt │ │ │ └── QueryReuseTest.java │ │ ├── reopening │ │ │ └── ChronoDBReopeningTest.java │ │ ├── safetyfeatures │ │ │ ├── DuplicateVersionEliminationTest.java │ │ │ └── RollbackToWALTest.java │ │ ├── statistics │ │ │ └── BranchHeadStatisticsTest.java │ │ ├── transaction │ │ │ ├── BasicTransactionTest.java │ │ │ ├── ChronoDBVersionRetrievalTest.java │ │ │ ├── CommitMetadataFilterTest.java │ │ │ ├── IncrementalCommitTest.java │ │ │ ├── PutOptionsTest.java │ │ │ ├── RollbackTest.java │ │ │ ├── SecondaryIndexBranchingTest.java │ │ │ └── TransactionConfigurationTest.java │ │ └── versioning │ │ │ ├── GetModifiedKeysTest.java │ │ │ ├── RangedGetTest.java │ │ │ └── VersioningTest.java │ │ ├── migration │ │ ├── MigrationChainTest.java │ │ ├── chainA │ │ │ ├── MigrationA1.java │ │ │ ├── MigrationA2.java │ │ │ └── MigrationA3.java │ │ └── chainB │ │ │ ├── MigrationB1.java │ │ │ └── MigrationB2.java │ │ ├── query │ │ ├── condition │ │ │ ├── DoubleQueryConditionEqualityToleranceTest.java │ │ │ ├── DoubleQueryConditionTest.java │ │ │ ├── LongQueryConditionTest.java │ │ │ └── TextualQueryConditionTest.java │ │ ├── optimizer │ │ │ └── ConditionNegationTest.java │ │ └── parser │ │ │ └── StandardQueryParserTest.java │ │ ├── settings │ │ ├── ChronoDBConfigurationTest.java │ │ └── ChronoDBPropertiesFileTest.java │ │ ├── temporal │ │ ├── InverseUnqualifiedTemporalKeyTest.java │ │ ├── PeriodTest.java │ │ ├── TemporalKeyTest.java │ │ └── UnqualifiedTemporalKeyTest.java │ │ └── util │ │ ├── IteratorUtilsTest.java │ │ ├── KillSwitchCollection.java │ │ ├── ReflectiveDoubleIndexer.java │ │ ├── ReflectiveIndexer.java │ │ ├── ReflectiveLongIndexer.java │ │ ├── ReflectiveStringIndexer.java │ │ ├── TemporalKeyComparatorsTest.java │ │ └── model │ │ ├── payload │ │ └── NamedPayloadNameIndexer.java │ │ └── person │ │ ├── FavoriteColorIndexer.java │ │ ├── FirstNameIndexer.java │ │ ├── HobbiesIndexer.java │ │ ├── LastNameIndexer.java │ │ ├── PersonIndexer.java │ │ └── PetsIndexer.java │ ├── kotlin │ └── org │ │ └── chronos │ │ └── chronodb │ │ └── test │ │ └── cases │ │ ├── ChronoDB0_10_18_to_0_11_0MigrationTest.kt │ │ ├── ChronoDB1_11_18_to_1_2_0MigrationTest.kt │ │ ├── DatebackKeyspaceMetadataTest.kt │ │ ├── DeleteBranchesTest.kt │ │ ├── DumpLoadKeyspaceMetadataTest.kt │ │ └── IncrementalBackupTest.kt │ └── resources │ ├── backup_test1.cib │ ├── backup_test1_corrupted.cib │ ├── changesAtCommitTimestampDump.xml │ ├── changesAtCommitTimestampDump2.xml │ ├── chronoCacheConfigTest_correct.properties │ ├── chronoCacheConfigTest_wrong.properties │ ├── chronos_backup_inc2.cib │ ├── chronotest.properties │ ├── fullChronoConfig.properties │ ├── logback-test.xml │ └── migrationTestResources │ ├── ChronoDB_v0_5_7_BranchTest_ChunkDB.zip │ ├── ChronoDB_v1_11_18_MigrationTest_Exodus.zip │ └── chronos_0_10_18.zip ├── org.chronos.chronodb.exodus ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── chronos │ │ │ └── chronodb │ │ │ └── exodus │ │ │ └── secondaryindex │ │ │ └── ExodusSecondaryIndex.java │ ├── kotlin │ │ └── org │ │ │ └── chronos │ │ │ └── chronodb │ │ │ ├── algorithms │ │ │ ├── TemporalGet.kt │ │ │ └── TemporalPut.kt │ │ │ └── exodus │ │ │ ├── ExodusChronoDB.kt │ │ │ ├── ExodusChronoDBFeatures.kt │ │ │ ├── ExodusDataMatrixUtil.kt │ │ │ ├── TemporalExodusMatrix.kt │ │ │ ├── builder │ │ │ ├── ExodusChronoDBBuilder.kt │ │ │ ├── ExodusChronoDBBuilderImpl.kt │ │ │ └── ExodusChronoDBFinalizableBuilder.kt │ │ │ ├── configuration │ │ │ └── ExodusChronoDBConfiguration.kt │ │ │ ├── environment │ │ │ └── EnvironmentManager.kt │ │ │ ├── kotlin │ │ │ └── ext │ │ │ │ ├── ExodusExtensions.kt │ │ │ │ ├── ExtensionFunctions.kt │ │ │ │ └── Preconditions.kt │ │ │ ├── layout │ │ │ ├── ChronoDBDirectoryLayout.kt │ │ │ └── ChronoDBStoreLayout.kt │ │ │ ├── manager │ │ │ ├── BranchMetadataIndex.kt │ │ │ ├── ExodusBackupManager.kt │ │ │ ├── ExodusBranchManager.kt │ │ │ ├── ExodusCommitMetadataStore.kt │ │ │ ├── ExodusDatebackManager.kt │ │ │ ├── ExodusIndexManager.kt │ │ │ ├── ExodusMaintenanceManager.kt │ │ │ ├── ExodusStatisticsManager.kt │ │ │ ├── ExodusTkvs.kt │ │ │ ├── NavigationIndex.kt │ │ │ └── chunk │ │ │ │ ├── BranchChunkManager.kt │ │ │ │ ├── ChronoChunk.kt │ │ │ │ ├── ChunkMetadata.kt │ │ │ │ ├── GlobalChunkManager.kt │ │ │ │ ├── RolloverProcessInfo.kt │ │ │ │ └── iterators │ │ │ │ ├── AllChunkEntriesIterator.kt │ │ │ │ ├── AllEntriesIterator.kt │ │ │ │ ├── HistoryIterator.kt │ │ │ │ ├── LazyChunkIterator.kt │ │ │ │ └── ModificationsIterator.kt │ │ │ ├── migration │ │ │ ├── ExodusMigration0_10_18_to_0_11_0.kt │ │ │ ├── ExodusMigration0_9_62_to_0_9_71.kt │ │ │ ├── ExodusMigration1_1_18_to_1_2_0.kt │ │ │ └── ExodusMigration1_2_27_to_1_3_0.kt │ │ │ ├── provider │ │ │ ├── ExodusChronoDBBackendProvider.kt │ │ │ └── ExodusChronoDBTestSuitePlugin.kt │ │ │ ├── secondaryindex │ │ │ ├── ExodusChunkIndex.kt │ │ │ ├── ExodusIndexManagerBackend.kt │ │ │ ├── ExodusIndexModifications.kt │ │ │ ├── ExodusRawIndexCursor.kt │ │ │ └── stores │ │ │ │ ├── ByteArrayLongSearchable.kt │ │ │ │ ├── IndexEntry.kt │ │ │ │ ├── IndexScanConfiguration.kt │ │ │ │ ├── ListLongSearchable.kt │ │ │ │ ├── LongSearchable.kt │ │ │ │ ├── RangeBinarySearch.kt │ │ │ │ ├── ScanResult.kt │ │ │ │ ├── ScanResultEntry.kt │ │ │ │ ├── ScanTimeMode.kt │ │ │ │ ├── SecondaryDoubleIndexStore.kt │ │ │ │ ├── SecondaryIndexKey.kt │ │ │ │ ├── SecondaryIndexStore.kt │ │ │ │ ├── SecondaryLongIndexStore.kt │ │ │ │ ├── SecondaryStringIndexStore.kt │ │ │ │ ├── StoreUtils.kt │ │ │ │ └── TypeAliases.kt │ │ │ ├── transaction │ │ │ ├── EmptyCursor.kt │ │ │ ├── ExodusChunkTransaction.kt │ │ │ ├── ExodusChunkTransactionImpl.kt │ │ │ ├── ExodusTransaction.kt │ │ │ ├── ExodusTransactionImpl.kt │ │ │ └── ExodusTransactionSource.kt │ │ │ └── util │ │ │ └── ByteManipulationUtil.kt │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.chronos.chronodb.api.builder.database.spi.ChronoDBBackendProvider │ └── test │ ├── kotlin │ └── org │ │ └── chronos │ │ └── chronodb │ │ └── exodus │ │ └── test │ │ ├── base │ │ ├── EnvironmentTest.kt │ │ └── TestWithTempDir.kt │ │ └── cases │ │ ├── ConfigurationTest.kt │ │ ├── DeleteBranchTest.kt │ │ ├── EnvironmentManagerParallelInsertTest.kt │ │ ├── EnvironmentPerformanceTest.kt │ │ ├── GetNextLowerTest.kt │ │ ├── MatrixPerformanceTest.kt │ │ ├── ParallelMatrixPerformanceTest.kt │ │ ├── SizeLimitTest.kt │ │ ├── TemporalExodusMatrixTest.kt │ │ ├── TemporalGetTest.kt │ │ ├── TemporalKeySerializationPerformanceTest.kt │ │ ├── chunk │ │ ├── BranchChunkManagerTest.kt │ │ ├── ChronoChunkTest.kt │ │ ├── ChunkMetadataTest.kt │ │ └── GlobalChunkManagerTest.kt │ │ ├── secondaryindex │ │ ├── RangeBinarySearchTest.kt │ │ ├── SecondaryDoubleIndexStoreTest.kt │ │ ├── SecondaryLongIndexStoreTest.kt │ │ ├── SecondaryStringIndexStorePerformanceTest.kt │ │ └── SecondaryStringIndexStoreTest.kt │ │ └── util │ │ └── ByteManipulationUtilTest.kt │ └── resources │ └── logback-test.xml ├── org.chronos.chronograph ├── build.gradle.kts ├── readme.md └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── chronos │ │ │ └── chronograph │ │ │ ├── api │ │ │ ├── ChronoGraphFactory.java │ │ │ ├── branch │ │ │ │ ├── ChronoGraphBranchManager.java │ │ │ │ └── GraphBranch.java │ │ │ ├── builder │ │ │ │ ├── graph │ │ │ │ │ ├── ChronoGraphBaseBuilder.java │ │ │ │ │ └── ChronoGraphFinalizableBuilder.java │ │ │ │ ├── index │ │ │ │ │ ├── EdgeIndexBuilder.java │ │ │ │ │ ├── ElementTypeChoiceIndexBuilder.java │ │ │ │ │ ├── FinalizableEdgeIndexBuilder.java │ │ │ │ │ ├── FinalizableVertexIndexBuilder.java │ │ │ │ │ ├── IndexBuilderStarter.java │ │ │ │ │ └── VertexIndexBuilder.java │ │ │ │ └── query │ │ │ │ │ ├── CP.java │ │ │ │ │ ├── DoubleEqualsCP.java │ │ │ │ │ ├── DoubleNotEqualsCP.java │ │ │ │ │ ├── DoubleWithinCP.java │ │ │ │ │ ├── DoubleWithoutCP.java │ │ │ │ │ ├── LongWithinCP.java │ │ │ │ │ ├── LongWithoutCP.java │ │ │ │ │ ├── StringWithinCP.java │ │ │ │ │ ├── StringWithoutCP.java │ │ │ │ │ └── ordering │ │ │ │ │ ├── AbstractCOrder.kt │ │ │ │ │ ├── AscendingCOrder.kt │ │ │ │ │ ├── COrder.java │ │ │ │ │ └── DescendingCOrder.kt │ │ │ ├── exceptions │ │ │ │ ├── ChronoGraphCommitConflictException.java │ │ │ │ ├── ChronoGraphConfigurationException.java │ │ │ │ ├── ChronoGraphException.java │ │ │ │ ├── ChronoGraphIndexingException.java │ │ │ │ ├── ChronoGraphSchemaViolationException.java │ │ │ │ ├── GraphInvariantViolationException.java │ │ │ │ ├── GraphTriggerClassNotFoundException.java │ │ │ │ ├── GraphTriggerException.java │ │ │ │ ├── GraphTriggerScriptCompilationException.java │ │ │ │ ├── GraphTriggerScriptException.java │ │ │ │ ├── GraphTriggerScriptInstantiationException.java │ │ │ │ ├── InvalidChronoIdentifierException.java │ │ │ │ ├── PropertyIsAlreadyIndexedException.java │ │ │ │ └── TriggerAlreadyExistsException.java │ │ │ ├── history │ │ │ │ ├── ChronoGraphHistoryManager.java │ │ │ │ └── RestoreResult.java │ │ │ ├── index │ │ │ │ ├── ChronoGraphIndex.java │ │ │ │ └── ChronoGraphIndexManager.java │ │ │ ├── iterators │ │ │ │ ├── ChronoGraphBranchIteratorBuilder.java │ │ │ │ ├── ChronoGraphIteratorBuilder.java │ │ │ │ ├── ChronoGraphIterators.java │ │ │ │ ├── ChronoGraphRootIteratorBuilder.java │ │ │ │ ├── ChronoGraphTimestampIteratorBuilder.java │ │ │ │ ├── GraphBranchIterationOrder.java │ │ │ │ ├── callbacks │ │ │ │ │ ├── BranchChangeCallback.java │ │ │ │ │ └── TimestampChangeCallback.java │ │ │ │ └── states │ │ │ │ │ ├── AllChangedEdgeIdsAndTheirPreviousNeighborhoodState.java │ │ │ │ │ ├── AllChangedEdgeIdsState.java │ │ │ │ │ ├── AllChangedElementIdsAndTheirNeighborhoodState.java │ │ │ │ │ ├── AllChangedElementIdsState.java │ │ │ │ │ ├── AllChangedVertexIdsAndTheirPreviousNeighborhoodState.java │ │ │ │ │ ├── AllChangedVertexIdsState.java │ │ │ │ │ ├── AllEdgesState.java │ │ │ │ │ ├── AllElementsState.java │ │ │ │ │ ├── AllVerticesState.java │ │ │ │ │ └── GraphIteratorState.java │ │ │ ├── jmx │ │ │ │ ├── ChronoGraphCacheStatistics.java │ │ │ │ ├── ChronoGraphCacheStatisticsMBean.java │ │ │ │ ├── ChronoGraphMBeanSupport.java │ │ │ │ ├── ChronoGraphTransactionStatistics.java │ │ │ │ └── ChronoGraphTransactionStatisticsMBean.java │ │ │ ├── maintenance │ │ │ │ └── ChronoGraphMaintenanceManager.java │ │ │ ├── schema │ │ │ │ ├── ChronoGraphSchemaManager.java │ │ │ │ └── SchemaValidationResult.java │ │ │ ├── statistics │ │ │ │ └── ChronoGraphStatisticsManager.java │ │ │ ├── structure │ │ │ │ ├── ChronoEdge.java │ │ │ │ ├── ChronoElement.java │ │ │ │ ├── ChronoGraph.java │ │ │ │ ├── ChronoGraphVariables.java │ │ │ │ ├── ChronoVertex.java │ │ │ │ ├── ElementLifecycleStatus.java │ │ │ │ ├── PropertyStatus.java │ │ │ │ └── record │ │ │ │ │ ├── IEdgeRecord.java │ │ │ │ │ ├── IEdgeRecordBuilder.kt │ │ │ │ │ ├── IEdgeTargetRecord.java │ │ │ │ │ ├── IElementRecord.java │ │ │ │ │ ├── IPropertyRecord.java │ │ │ │ │ ├── IVertexPropertyRecord.java │ │ │ │ │ ├── IVertexRecord.java │ │ │ │ │ ├── IVertexRecordBuilder.kt │ │ │ │ │ └── Record.java │ │ │ └── transaction │ │ │ │ ├── AllEdgesIterationHandler.java │ │ │ │ ├── AllVerticesIterationHandler.java │ │ │ │ ├── ChronoGraphTransaction.java │ │ │ │ ├── ChronoGraphTransactionManager.java │ │ │ │ ├── GraphTransactionContext.java │ │ │ │ ├── conflict │ │ │ │ ├── PropertyConflict.java │ │ │ │ └── PropertyConflictResolutionStrategy.java │ │ │ │ └── trigger │ │ │ │ ├── AncestorState.java │ │ │ │ ├── CancelCommitException.java │ │ │ │ ├── ChronoGraphPostCommitTrigger.java │ │ │ │ ├── ChronoGraphPostPersistTrigger.java │ │ │ │ ├── ChronoGraphPreCommitTrigger.java │ │ │ │ ├── ChronoGraphPrePersistTrigger.java │ │ │ │ ├── ChronoGraphTrigger.java │ │ │ │ ├── ChronoGraphTriggerManager.java │ │ │ │ ├── CurrentState.java │ │ │ │ ├── GraphTriggerMetadata.java │ │ │ │ ├── PostCommitTriggerContext.java │ │ │ │ ├── PostPersistTriggerContext.java │ │ │ │ ├── PostTriggerContext.java │ │ │ │ ├── PreCommitStoreState.java │ │ │ │ ├── PreCommitTriggerContext.java │ │ │ │ ├── PrePersistTriggerContext.java │ │ │ │ ├── PreTriggerContext.java │ │ │ │ ├── ScriptedGraphTrigger.java │ │ │ │ ├── State.java │ │ │ │ ├── StoreState.java │ │ │ │ ├── TriggerContext.java │ │ │ │ └── TriggerTiming.java │ │ │ └── internal │ │ │ ├── ChronoGraphConstants.java │ │ │ ├── api │ │ │ ├── configuration │ │ │ │ └── ChronoGraphConfiguration.java │ │ │ ├── index │ │ │ │ ├── ChronoGraphIndexInternal.java │ │ │ │ ├── ChronoGraphIndexManagerInternal.java │ │ │ │ ├── IChronoGraphEdgeIndex.java │ │ │ │ └── IChronoGraphVertexIndex.java │ │ │ ├── migration │ │ │ │ └── ChronoGraphMigration.java │ │ │ ├── structure │ │ │ │ ├── ChronoElementInternal.java │ │ │ │ └── ChronoGraphInternal.java │ │ │ └── transaction │ │ │ │ ├── ChronoGraphTransactionInternal.java │ │ │ │ └── GraphTransactionContextInternal.java │ │ │ └── impl │ │ │ ├── branch │ │ │ ├── ChronoGraphBranchManagerImpl.java │ │ │ └── GraphBranchImpl.java │ │ │ ├── builder │ │ │ ├── graph │ │ │ │ ├── AbstractChronoGraphBuilder.java │ │ │ │ ├── AbstractChronoGraphFinalizableBuilder.java │ │ │ │ ├── ChronoGraphBaseBuilderImpl.java │ │ │ │ ├── ChronoGraphDefaultProperties.java │ │ │ │ ├── ChronoGraphOnChronoDBBuilder.java │ │ │ │ └── ChronoGraphPropertyFileBuilderImpl.java │ │ │ └── index │ │ │ │ └── ChronoGraphIndexBuilder.kt │ │ │ ├── configuration │ │ │ └── ChronoGraphConfigurationImpl.java │ │ │ ├── dumpformat │ │ │ ├── EdgeDump.java │ │ │ ├── EdgeTargetDump.java │ │ │ ├── GraphDumpFormat.java │ │ │ ├── VertexDump.java │ │ │ ├── converter │ │ │ │ ├── EdgeRecordConverter.java │ │ │ │ └── VertexRecordConverter.java │ │ │ ├── property │ │ │ │ ├── AbstractPropertyDump.java │ │ │ │ ├── BinaryPropertyDump.java │ │ │ │ └── PlainPropertyDump.java │ │ │ └── vertexproperty │ │ │ │ ├── VertexBinaryPropertyDump.java │ │ │ │ ├── VertexPlainPropertyDump.java │ │ │ │ └── VertexPropertyDump.java │ │ │ ├── factory │ │ │ └── ChronoGraphFactoryImpl.java │ │ │ ├── groovy │ │ │ ├── GroovyCompilationCache.java │ │ │ ├── LocalGroovyCompilationCache.java │ │ │ └── StaticGroovyCompilationCache.java │ │ │ ├── history │ │ │ ├── ChronoGraphHistoryManagerImpl.java │ │ │ └── MutableRestoreResult.java │ │ │ ├── index │ │ │ ├── AbstractChronoGraphIndex.java │ │ │ ├── AbstractChronoGraphIndex2.java │ │ │ ├── AbstractRecordPropertyIndexer.java │ │ │ ├── AbstractRecordPropertyIndexer2.java │ │ │ ├── ChronoGraphEdgeIndex.java │ │ │ ├── ChronoGraphEdgeIndex2.java │ │ │ ├── ChronoGraphIndex3.java │ │ │ ├── ChronoGraphIndexManagerImpl.java │ │ │ ├── ChronoGraphVertexIndex.java │ │ │ ├── ChronoGraphVertexIndex2.java │ │ │ ├── EdgeRecordDoubleIndexer2.java │ │ │ ├── EdgeRecordLongIndexer2.java │ │ │ ├── EdgeRecordPropertyIndexer.java │ │ │ ├── EdgeRecordPropertyIndexer2.java │ │ │ ├── EdgeRecordStringIndexer2.java │ │ │ ├── GraphIndexingUtils.java │ │ │ ├── GraphPropertyIndexer.java │ │ │ ├── IndexMigrationUtil.java │ │ │ ├── IndexType.java │ │ │ ├── VertexRecordDoubleIndexer2.java │ │ │ ├── VertexRecordLongIndexer2.java │ │ │ ├── VertexRecordPropertyIndexer.java │ │ │ ├── VertexRecordPropertyIndexer2.java │ │ │ └── VertexRecordStringIndexer2.java │ │ │ ├── iterators │ │ │ └── builder │ │ │ │ ├── AbstractChronoGraphIteratorBuilder.java │ │ │ │ ├── BuilderConfig.java │ │ │ │ ├── ChronoGraphBranchIteratorBuilderImpl.java │ │ │ │ ├── ChronoGraphRootIteratorBuilderImpl.java │ │ │ │ ├── ChronoGraphTimestampIteratorBuilderImpl.java │ │ │ │ ├── SideEffectIterator.java │ │ │ │ └── states │ │ │ │ ├── AllChangedEdgeIdsAndTheirPreviousNeighborhoodStateImpl.java │ │ │ │ ├── AllChangedEdgeIdsStateImpl.java │ │ │ │ ├── AllChangedElementIdsAndTheirPreviousNeighborhoodStateImpl.java │ │ │ │ ├── AllChangedElementIdsStateImpl.java │ │ │ │ ├── AllChangedVertexIdsAndTheirPreviousNeighborhoodStateImpl.java │ │ │ │ ├── AllChangedVertexIdsStateImpl.java │ │ │ │ ├── AllEdgesStateImpl.java │ │ │ │ ├── AllElementsStateImpl.java │ │ │ │ ├── AllVerticesStateImpl.java │ │ │ │ └── GraphIteratorStateImpl.java │ │ │ ├── maintenance │ │ │ └── ChronoGraphMaintenanceManagerImpl.java │ │ │ ├── migration │ │ │ ├── ChronoGraphMigrationChain.java │ │ │ ├── ChronoGraphMigration_0_11_1_to_0_11_2.java │ │ │ └── ChronoGraphMigration_0_11_6_to_0_11_7.java │ │ │ ├── optimizer │ │ │ ├── step │ │ │ │ ├── ChronoGraphIndexedHasStep.kt │ │ │ │ ├── ChronoGraphOrderGlobalStep.kt │ │ │ │ ├── ChronoGraphPrefetchingBarrierStep.kt │ │ │ │ ├── ChronoGraphPropertiesStep.kt │ │ │ │ ├── ChronoGraphPropertyMapStep.kt │ │ │ │ ├── ChronoGraphStep.java │ │ │ │ ├── Prefetcher.kt │ │ │ │ └── Prefetching.kt │ │ │ ├── strategy │ │ │ │ ├── ChronoGraphStepStrategy.kt │ │ │ │ ├── ChronoGraphStrategy.kt │ │ │ │ ├── FetchValuesFromSecondaryIndexStrategy.kt │ │ │ │ ├── OrderFiltersStrategy.kt │ │ │ │ ├── PredicateNormalizationStrategy.kt │ │ │ │ ├── ReplaceGremlinPredicateWithChronosPredicateStrategy.kt │ │ │ │ ├── TraversalStrategyUtils.kt │ │ │ │ └── UseSecondaryIndexForHasStepsStrategy.kt │ │ │ └── traversals │ │ │ │ ├── ElementValueOrNullTraversal.kt │ │ │ │ └── TableLookupTraversal.kt │ │ │ ├── query │ │ │ ├── ChronoCompare.java │ │ │ ├── ChronoCompareUtil.java │ │ │ └── ChronoStringCompare.java │ │ │ ├── schema │ │ │ ├── ChronoGraphSchemaManagerImpl.java │ │ │ └── SchemaValidationResultImpl.java │ │ │ ├── statistics │ │ │ └── ChronoGraphStatisticsManagerImpl.java │ │ │ ├── structure │ │ │ ├── graph │ │ │ │ ├── AbstractChronoElement.java │ │ │ │ ├── ChronoEdgeImpl.java │ │ │ │ ├── ChronoGraphVariablesImpl.java │ │ │ │ ├── ChronoProperty.java │ │ │ │ ├── ChronoVertexImpl.java │ │ │ │ ├── ChronoVertexProperty.java │ │ │ │ ├── ElementLifecycleEvent.java │ │ │ │ ├── StandardChronoGraph.java │ │ │ │ ├── features │ │ │ │ │ ├── AbstractChronoGraphFeature.java │ │ │ │ │ ├── ChronoEdgeFeatures.java │ │ │ │ │ ├── ChronoGraphEdgePropertyFeatures.java │ │ │ │ │ ├── ChronoGraphFeatures.java │ │ │ │ │ ├── ChronoGraphGraphFeatures.java │ │ │ │ │ ├── ChronoVertexFeatures.java │ │ │ │ │ └── ChronoVertexPropertyFeatures.java │ │ │ │ ├── proxy │ │ │ │ │ ├── AbstractElementProxy.java │ │ │ │ │ ├── ChronoEdgeProxy.java │ │ │ │ │ └── ChronoVertexProxy.java │ │ │ │ └── readonly │ │ │ │ │ ├── NoTransactionControlChronoGraph.java │ │ │ │ │ ├── NoTransactionControlChronoGraphTransaction.java │ │ │ │ │ ├── NoTransactionControlTransactionManager.java │ │ │ │ │ ├── ReadOnlyChronoEdge.java │ │ │ │ │ ├── ReadOnlyChronoElement.java │ │ │ │ │ ├── ReadOnlyChronoGraph.java │ │ │ │ │ ├── ReadOnlyChronoGraphBranchManager.java │ │ │ │ │ ├── ReadOnlyChronoGraphIndexManager.java │ │ │ │ │ ├── ReadOnlyChronoGraphMaintenanceManager.java │ │ │ │ │ ├── ReadOnlyChronoGraphSchemaManager.java │ │ │ │ │ ├── ReadOnlyChronoGraphStatisticsManager.java │ │ │ │ │ ├── ReadOnlyChronoGraphTransaction.java │ │ │ │ │ ├── ReadOnlyChronoGraphTransactionManager.java │ │ │ │ │ ├── ReadOnlyChronoGraphTriggerManager.java │ │ │ │ │ ├── ReadOnlyChronoVertex.java │ │ │ │ │ ├── ReadOnlyConfiguration.java │ │ │ │ │ ├── ReadOnlyGraphTransactionContext.java │ │ │ │ │ ├── ReadOnlyHistoryManager.java │ │ │ │ │ ├── ReadOnlyProperty.java │ │ │ │ │ ├── ReadOnlyVariables.java │ │ │ │ │ └── ReadOnlyVertexProperty.java │ │ │ ├── record │ │ │ │ ├── EdgeRecord.java │ │ │ │ ├── EdgeTargetRecord.java │ │ │ │ ├── EdgeTargetRecordWithLabel.java │ │ │ │ ├── PropertyRecord.java │ │ │ │ ├── VertexPropertyRecord.java │ │ │ │ └── VertexRecord.java │ │ │ ├── record2 │ │ │ │ ├── EdgeRecord2.java │ │ │ │ ├── EdgeTargetRecord2.java │ │ │ │ ├── PropertyRecord2.java │ │ │ │ ├── VertexPropertyRecord2.java │ │ │ │ ├── VertexRecord2.java │ │ │ │ └── valuerecords │ │ │ │ │ ├── PropertyRecordBooleanArrayValue.java │ │ │ │ │ ├── PropertyRecordBooleanListValue.java │ │ │ │ │ ├── PropertyRecordBooleanSetValue.java │ │ │ │ │ ├── PropertyRecordBooleanValue.java │ │ │ │ │ ├── PropertyRecordBooleanWrapperArrayValue.java │ │ │ │ │ ├── PropertyRecordByteArrayValue.java │ │ │ │ │ ├── PropertyRecordByteListValue.java │ │ │ │ │ ├── PropertyRecordByteSetValue.java │ │ │ │ │ ├── PropertyRecordByteValue.java │ │ │ │ │ ├── PropertyRecordByteWrapperArrayValue.java │ │ │ │ │ ├── PropertyRecordCharArrayValue.java │ │ │ │ │ ├── PropertyRecordCharListValue.java │ │ │ │ │ ├── PropertyRecordCharSetValue.java │ │ │ │ │ ├── PropertyRecordCharValue.java │ │ │ │ │ ├── PropertyRecordCharWrapperArrayValue.java │ │ │ │ │ ├── PropertyRecordCustomObjectValue.java │ │ │ │ │ ├── PropertyRecordDateArrayValue.java │ │ │ │ │ ├── PropertyRecordDateListValue.java │ │ │ │ │ ├── PropertyRecordDateSetValue.java │ │ │ │ │ ├── PropertyRecordDateValue.java │ │ │ │ │ ├── PropertyRecordDoubleArrayValue.java │ │ │ │ │ ├── PropertyRecordDoubleListValue.java │ │ │ │ │ ├── PropertyRecordDoubleSetValue.java │ │ │ │ │ ├── PropertyRecordDoubleValue.java │ │ │ │ │ ├── PropertyRecordDoubleWrapperArrayValue.java │ │ │ │ │ ├── PropertyRecordEmptyListValue.java │ │ │ │ │ ├── PropertyRecordEmptySetValue.java │ │ │ │ │ ├── PropertyRecordFloatArrayValue.java │ │ │ │ │ ├── PropertyRecordFloatListValue.java │ │ │ │ │ ├── PropertyRecordFloatSetValue.java │ │ │ │ │ ├── PropertyRecordFloatValue.java │ │ │ │ │ ├── PropertyRecordFloatWrapperArrayValue.java │ │ │ │ │ ├── PropertyRecordIntArrayValue.java │ │ │ │ │ ├── PropertyRecordIntListValue.java │ │ │ │ │ ├── PropertyRecordIntSetValue.java │ │ │ │ │ ├── PropertyRecordIntValue.java │ │ │ │ │ ├── PropertyRecordIntWrapperArrayValue.java │ │ │ │ │ ├── PropertyRecordLongArrayValue.java │ │ │ │ │ ├── PropertyRecordLongListValue.java │ │ │ │ │ ├── PropertyRecordLongSetValue.java │ │ │ │ │ ├── PropertyRecordLongValue.java │ │ │ │ │ ├── PropertyRecordLongWrapperArrayValue.java │ │ │ │ │ ├── PropertyRecordShortArrayValue.java │ │ │ │ │ ├── PropertyRecordShortListValue.java │ │ │ │ │ ├── PropertyRecordShortSetValue.java │ │ │ │ │ ├── PropertyRecordShortValue.java │ │ │ │ │ ├── PropertyRecordShortWrapperArrayValue.java │ │ │ │ │ ├── PropertyRecordStringArrayValue.java │ │ │ │ │ ├── PropertyRecordStringListValue.java │ │ │ │ │ ├── PropertyRecordStringSetValue.java │ │ │ │ │ ├── PropertyRecordStringValue.java │ │ │ │ │ ├── PropertyRecordValue.java │ │ │ │ │ └── PropertyRecordValueUtil.java │ │ │ └── record3 │ │ │ │ ├── SimpleVertexPropertyRecord.java │ │ │ │ ├── VertexPropertyRecord3.java │ │ │ │ └── VertexRecord3.java │ │ │ ├── transaction │ │ │ ├── ChronoGraphQueryProcessor.java │ │ │ ├── ChronoGraphTransactionManagerImpl.java │ │ │ ├── ElementLoadMode.java │ │ │ ├── GraphTransactionContextImpl.java │ │ │ ├── StandardChronoGraphTransaction.java │ │ │ ├── conflict │ │ │ │ ├── PropertyConflictImpl.java │ │ │ │ └── strategies │ │ │ │ │ ├── OverwriteWithStoreValueStrategy.java │ │ │ │ │ ├── OverwriteWithTransactionValueStrategy.java │ │ │ │ │ └── ThrowExceptionStrategy.java │ │ │ ├── merge │ │ │ │ └── GraphConflictMergeUtils.java │ │ │ ├── threaded │ │ │ │ ├── ChronoThreadedTransactionGraph.java │ │ │ │ ├── ThreadedChronoGraphIndexManager.java │ │ │ │ ├── ThreadedChronoGraphTransaction.java │ │ │ │ └── ThreadedChronoGraphTransactionManager.java │ │ │ └── trigger │ │ │ │ ├── AbstractTriggerContext.java │ │ │ │ ├── AncestorStateImpl.java │ │ │ │ ├── ChronoGraphTriggerManagerImpl.java │ │ │ │ ├── ChronoGraphTriggerManagerInternal.java │ │ │ │ ├── ChronoGraphTriggerWrapper.java │ │ │ │ ├── CurrentStateImpl.java │ │ │ │ ├── GraphTriggerMetadataImpl.java │ │ │ │ ├── NamedTriggerCategoryComparator.java │ │ │ │ ├── NamedTriggerComparator.java │ │ │ │ ├── PostTriggerContextImpl.java │ │ │ │ ├── PreCommitStoreStateImpl.java │ │ │ │ ├── PrePersistCurrentStateImpl.java │ │ │ │ ├── PreTriggerContextImpl.java │ │ │ │ ├── StoreStateImpl.java │ │ │ │ └── script │ │ │ │ ├── AbstractScriptedGraphTrigger.java │ │ │ │ ├── ScriptedGraphPostCommitTrigger.java │ │ │ │ ├── ScriptedGraphPostPersistTrigger.java │ │ │ │ ├── ScriptedGraphPreCommitTrigger.java │ │ │ │ └── ScriptedGraphPrePersistTrigger.java │ │ │ └── util │ │ │ ├── CachedSupplier.java │ │ │ ├── ChronoGraphElementUtil.java │ │ │ ├── ChronoGraphLoggingUtil.java │ │ │ ├── ChronoGraphQueryUtil.java │ │ │ ├── ChronoGraphStepUtil.kt │ │ │ ├── ChronoGraphTraversalUtil.java │ │ │ ├── ChronoId.java │ │ │ ├── ChronoProxyUtil.java │ │ │ ├── PredefinedProperty.java │ │ │ └── PredefinedVertexProperty.java │ └── resources │ │ └── ToDoList.txt │ └── test │ ├── java │ └── org │ │ └── chronos │ │ └── chronograph │ │ └── test │ │ ├── _gremlinsuite │ │ ├── InMemoryChronoGraphProcessStandardTestSuite.java │ │ ├── InMemoryChronoGraphProvider.java │ │ └── InMemoryChronoGraphStructureStandardTestSuite.java │ │ ├── _suite │ │ └── ChronoGraphTestSuite.java │ │ ├── base │ │ ├── AllChronoGraphBackendsTest.java │ │ ├── ChronoGraphUnitTest.java │ │ ├── FailOnAllEdgesQuery.java │ │ └── FailOnAllVerticesQuery.java │ │ ├── cases │ │ ├── branch │ │ │ └── GraphBranchTest.java │ │ ├── builder │ │ │ ├── ChronoGraphCreationTest.java │ │ │ └── GraphBuilderTest.java │ │ ├── commitmetadata │ │ │ ├── BasicCommitMetadataTest.java │ │ │ ├── CountCommitsTest.java │ │ │ ├── GetCommitsBeforeAfterAroundTest.java │ │ │ ├── GetCommitsBetweenPagedTest.java │ │ │ ├── GetCommitsBetweenTest.java │ │ │ └── GetGraphElementsChangedAtCommitTest.java │ │ ├── configuration │ │ │ └── ChronoGraphConfigurationTest.java │ │ ├── dump │ │ │ └── ChronoGraphDumpTest.java │ │ ├── gremlin │ │ │ ├── GremlinContainmentQueryTest.java │ │ │ ├── GremlinOrTest.java │ │ │ ├── GremlinPerformanceTest.java │ │ │ ├── GremlinTest.java │ │ │ └── GremlinTransitiveClosureTest.java │ │ ├── hashcode │ │ │ └── GraphElementHashCodeAndEqualsTest.java │ │ ├── id │ │ │ ├── FetchElementsByIdTest.java │ │ │ └── IdsUniqueTest.java │ │ ├── index │ │ │ ├── GraphIndexingUtilsTest.java │ │ │ ├── MixedIndexingTest.kt │ │ │ ├── NumericIndexingTest.java │ │ │ └── StringIndexingTest.java │ │ ├── iterators │ │ │ └── GraphIteratorsTest.java │ │ ├── logging │ │ │ └── ChronoGraphModificationLoggingTest.java │ │ ├── query │ │ │ ├── ChronoCompareTest.java │ │ │ ├── FailOnExhaustiveIterationTest.kt │ │ │ ├── FetchValuesFromSecondaryIndexTest.kt │ │ │ ├── GraphQueryTest.java │ │ │ ├── GremlinDoubleMultivalueTest.java │ │ │ ├── GremlinIndexedHasQueryTest.kt │ │ │ ├── GremlinLongMultivalueTest.java │ │ │ ├── GremlinMultiHasClauseTest.kt │ │ │ ├── GremlinStringMultivalueTest.java │ │ │ ├── GremlinValueMapPrefetchingTest.kt │ │ │ ├── HasStepSimplificationTest.kt │ │ │ ├── QueryIndexBeforeBranchingTimestampTest.kt │ │ │ ├── QueryOptimizationForNegatedClausesTest.kt │ │ │ ├── QueryOptimizationForWithinClausesTest.kt │ │ │ ├── SortingPerformanceTest.kt │ │ │ └── strategies │ │ │ │ ├── ChronoGraphStepStrategyTest.kt │ │ │ │ ├── EarlyLimitStrategyTest.kt │ │ │ │ ├── FetchValuesFromSecondaryIndexStrategyTest.kt │ │ │ │ └── OrderFiltersStrategyTest.kt │ │ ├── record │ │ │ ├── PropertyRecordValueTest.java │ │ │ └── RecordBuilderTest.kt │ │ ├── schemavalidation │ │ │ └── SchemaValidationTest.java │ │ ├── structure │ │ │ ├── AddEdgeTest.java │ │ │ ├── EdgeSymmetryTest.java │ │ │ ├── ElementLifecycleTest.java │ │ │ ├── GraphIntegrityTortureTest.java │ │ │ ├── LifecycleTransitionsTest.java │ │ │ ├── MultiEdgeTest.java │ │ │ ├── PropertyLifecycleTest.java │ │ │ └── RemoveElementsTest.java │ │ ├── system │ │ │ ├── ChronoGraphFactoryTest.java │ │ │ └── CrossCuttingFeaturesTest.java │ │ └── transaction │ │ │ ├── ChronoGraphVariablesTest.java │ │ │ ├── CommitMetadataTest.java │ │ │ ├── ElementHistoryTest.java │ │ │ ├── ElementIdReuseTest.java │ │ │ ├── ElementTransactionTransitionTest.java │ │ │ ├── GraphVersioningTest.java │ │ │ ├── HistoryManagerTest.java │ │ │ ├── IncrementalGraphCommitPerformanceTest.java │ │ │ ├── IncrementalGraphCommitTest.java │ │ │ ├── ManyChangesOnSamePropertyValueTest.java │ │ │ ├── ThreadedTransactionTest.java │ │ │ ├── TransactionCloseTest.java │ │ │ ├── TransientModificationTest.java │ │ │ ├── conflict │ │ │ ├── GraphConflictMergeUtilsTest.java │ │ │ └── GraphTransactionConflictTest.java │ │ │ └── trigger │ │ │ ├── ChronoGraphScriptedTriggerTest.java │ │ │ └── ChronoGraphTriggerTest.java │ │ └── util │ │ ├── ChronoGraphTestUtil.java │ │ ├── FailOnAllEdgesIterationHandler.java │ │ └── FailOnAllVerticesIterationHandler.java │ ├── kotlin │ └── org │ │ └── chronos │ │ └── chronograph │ │ └── test │ │ └── manual │ │ └── DumpToJsonTest.kt │ └── resources │ ├── logback-test.xml │ └── org │ └── chronos │ └── chronograph │ ├── dump │ ├── IndexingGraphDump.zip │ └── dumpReaderTest.xml │ └── testStructures │ ├── associations.csv │ └── entities.csv ├── org.chronos.chronosphere ├── build.gradle.kts ├── changelog.md └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── chronos │ │ │ └── chronosphere │ │ │ ├── api │ │ │ ├── ChronoSphere.java │ │ │ ├── ChronoSphereBranchManager.java │ │ │ ├── ChronoSphereEPackageManager.java │ │ │ ├── ChronoSphereFactory.java │ │ │ ├── ChronoSphereIndexManager.java │ │ │ ├── ChronoSphereTransaction.java │ │ │ ├── MetaModelEvolutionContext.java │ │ │ ├── MetaModelEvolutionController.java │ │ │ ├── MetaModelEvolutionIncubator.java │ │ │ ├── SphereBranch.java │ │ │ ├── builder │ │ │ │ └── repository │ │ │ │ │ ├── ChronoSphereBaseBuilder.java │ │ │ │ │ ├── ChronoSphereFinalizableBuilder.java │ │ │ │ │ ├── ChronoSphereInMemoryBuilder.java │ │ │ │ │ └── ChronoSpherePropertyFileBuilder.java │ │ │ ├── exceptions │ │ │ │ ├── ChronoSphereCommitException.java │ │ │ │ ├── ChronoSphereConfigurationException.java │ │ │ │ ├── ChronoSphereException.java │ │ │ │ ├── ChronoSphereQueryException.java │ │ │ │ ├── EObjectPersistenceException.java │ │ │ │ ├── EPackagesAreNotSelfContainedException.java │ │ │ │ ├── ElementCannotBeEvolvedException.java │ │ │ │ ├── MetaModelEvolutionCanceledException.java │ │ │ │ ├── MetaModelEvolutionException.java │ │ │ │ ├── ResourceIsAlreadyClosedException.java │ │ │ │ ├── StorageBackendCorruptedException.java │ │ │ │ └── emf │ │ │ │ │ ├── ChronoSphereEMFException.java │ │ │ │ │ ├── NameResolutionException.java │ │ │ │ │ └── XMIConversionFailedException.java │ │ │ └── query │ │ │ │ ├── Direction.java │ │ │ │ ├── EObjectQueryStepBuilder.java │ │ │ │ ├── NumericCastableQueryStepBuilder.java │ │ │ │ ├── NumericQueryStepBuilder.java │ │ │ │ ├── Order.java │ │ │ │ ├── QueryStepBuilder.java │ │ │ │ ├── QueryStepBuilderInternal.java │ │ │ │ ├── QueryStepBuilderStarter.java │ │ │ │ ├── SubQuery.java │ │ │ │ └── UntypedQueryStepBuilder.java │ │ │ ├── emf │ │ │ ├── api │ │ │ │ └── ChronoEObject.java │ │ │ ├── impl │ │ │ │ ├── ChronoEFactory.java │ │ │ │ └── ChronoEObjectImpl.java │ │ │ └── internal │ │ │ │ ├── api │ │ │ │ ├── ChronoEObjectInternal.java │ │ │ │ ├── ChronoEObjectLifecycle.java │ │ │ │ └── ChronoResource.java │ │ │ │ ├── impl │ │ │ │ └── store │ │ │ │ │ ├── AbstractChronoEStore.java │ │ │ │ │ ├── ChronoEStore.java │ │ │ │ │ ├── ChronoGraphEStore.java │ │ │ │ │ └── OwnedTransientEStore.java │ │ │ │ └── util │ │ │ │ └── EMFUtils.java │ │ │ ├── impl │ │ │ ├── ChronoSphereBranchManagerImpl.java │ │ │ ├── ChronoSphereEPackageManagerImpl.java │ │ │ ├── ChronoSphereFactoryImpl.java │ │ │ ├── ChronoSphereIndexManagerImpl.java │ │ │ ├── SphereBranchImpl.java │ │ │ ├── StandardChronoSphere.java │ │ │ ├── evolution │ │ │ │ ├── IncubatorBasedModelEvolutionController.java │ │ │ │ ├── MetaModelEvolutionProcess.java │ │ │ │ └── ModelEvolutionContextImpl.java │ │ │ ├── query │ │ │ │ ├── AbstractQueryStepBuilder.java │ │ │ │ ├── EObjectAttributeComparator.java │ │ │ │ ├── EObjectQueryStepBuilderImpl.java │ │ │ │ ├── NumericQueryStepBuilderImpl.java │ │ │ │ ├── ObjectQueryStepBuilderImpl.java │ │ │ │ ├── QueryStepBuilderStarterImpl.java │ │ │ │ ├── QueryUtils.java │ │ │ │ ├── steps │ │ │ │ │ ├── eobject │ │ │ │ │ │ ├── EObjectQueryAllReferencingEObjectsQueryStep.java │ │ │ │ │ │ ├── EObjectQueryAndStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryAsEObjectStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryClosureStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryDistinctStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryEAllContentsStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryEContainerStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryEContentsStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryEGetInverseByNameStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryEGetInverseByReferenceStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryEGetReferenceStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryExceptObjectsStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryHasFeatureValueStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryIdentityStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryInstanceOfEClassNameStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryInstanceOfEClassStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryLimitStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryNonNullStepBuilder.java │ │ │ │ │ │ ├── EObjectQueryNotStepBuilder.java │ │ │ │ │ │ └── EObjectQueryOrStepBuilder.java │ │ │ │ │ ├── numeric │ │ │ │ │ │ ├── NumericQueryAsByteStepBuilder.java │ │ │ │ │ │ ├── NumericQueryAsDoubleStepBuilder.java │ │ │ │ │ │ ├── NumericQueryAsFloatStepBuilder.java │ │ │ │ │ │ ├── NumericQueryAsIntegerStepBuilder.java │ │ │ │ │ │ ├── NumericQueryAsLongStepBuilder.java │ │ │ │ │ │ ├── NumericQueryAsShortStepBuilder.java │ │ │ │ │ │ ├── NumericQueryCeilStepBuilder.java │ │ │ │ │ │ ├── NumericQueryFloorStepBuilder.java │ │ │ │ │ │ ├── NumericQueryRoundStepBuilder.java │ │ │ │ │ │ └── NumericQueryRoundToIntStepBuilder.java │ │ │ │ │ └── object │ │ │ │ │ │ ├── ObjectQueryAndStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryAsBooleanStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryAsCharacterStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryBackStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryDistinctStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryEGetAttributeStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryEGetByNameStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryEObjectBackStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryEObjectReifyStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryEObjectUnionStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryExceptNamedStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryExceptSetStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryFilterStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryFlatMapStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryLimitStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryMapStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryNamedStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryNotStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryOrStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryOrderByStepBuilder.java │ │ │ │ │ │ ├── ObjectQueryTerminalConverterStepBuilder.java │ │ │ │ │ │ └── ObjectQueryUnionStepBuilder.java │ │ │ │ └── traversal │ │ │ │ │ ├── TraversalBaseSource.java │ │ │ │ │ ├── TraversalChainElement.java │ │ │ │ │ ├── TraversalSource.java │ │ │ │ │ └── TraversalTransformer.java │ │ │ └── transaction │ │ │ │ └── ChronoSphereTransactionImpl.java │ │ │ └── internal │ │ │ ├── api │ │ │ ├── ChronoSphereEPackageManagerInternal.java │ │ │ ├── ChronoSphereInternal.java │ │ │ ├── ChronoSphereTransactionInternal.java │ │ │ └── SphereTransactionContext.java │ │ │ ├── builder │ │ │ └── repository │ │ │ │ └── impl │ │ │ │ ├── AbstractChronoSphereBuilder.java │ │ │ │ ├── AbstractChronoSphereFinalizableBuilder.java │ │ │ │ ├── ChronoSphereBaseBuilderImpl.java │ │ │ │ ├── ChronoSphereInMemoryBuilderImpl.java │ │ │ │ └── ChronoSpherePropertyFileBuilderImpl.java │ │ │ ├── configuration │ │ │ ├── api │ │ │ │ └── ChronoSphereConfiguration.java │ │ │ └── impl │ │ │ │ └── ChronoSphereConfigurationImpl.java │ │ │ └── ogm │ │ │ ├── api │ │ │ ├── ChronoEPackageRegistry.java │ │ │ ├── ChronoEPackageRegistryInternal.java │ │ │ ├── ChronoSphereGraphFormat.java │ │ │ ├── EObjectToGraphMapper.java │ │ │ ├── EPackageBundle.java │ │ │ ├── EPackageToGraphMapper.java │ │ │ ├── GraphToEcoreMapper.java │ │ │ └── VertexKind.java │ │ │ └── impl │ │ │ ├── ChronoEPackageRegistryImpl.java │ │ │ ├── EObjectToGraphMapperImpl.java │ │ │ ├── EPackageBundleImpl.java │ │ │ ├── EPackageToGraphMapperImpl.java │ │ │ └── GremlinUtils.java │ └── resources │ │ ├── testinstancemodels │ │ └── grabats │ │ │ └── set0.xmi.gz │ │ └── testmetamodels │ │ └── grabats │ │ ├── CFG.ecore │ │ ├── JDTAST.ecore │ │ ├── PDG.ecore │ │ └── Q1View.ecore │ └── test │ ├── java │ └── org │ │ └── chronos │ │ └── chronosphere │ │ └── test │ │ ├── _suite │ │ └── ChronoSphereTestSuite.java │ │ ├── base │ │ ├── AllChronoSphereBackendsTest.java │ │ └── ChronoSphereUnitTest.java │ │ ├── cases │ │ ├── builder │ │ │ └── ChronoSphereBuilderTest.java │ │ ├── configuration │ │ │ └── ChronoSphereConfigurationTest.java │ │ ├── emf │ │ │ ├── EMFUtilsTest.java │ │ │ └── estore │ │ │ │ ├── base │ │ │ │ ├── EStoreTest.java │ │ │ │ └── EmfAPI.java │ │ │ │ └── impl │ │ │ │ └── BasicEStoreTest.java │ │ ├── evolution │ │ │ └── BasicMetamodelEvolutionTest.java │ │ ├── grabats │ │ │ └── GrabatsTest.java │ │ ├── indexing │ │ │ └── ChronoSphereIndexManagerTest.java │ │ ├── query │ │ │ └── QueryAPITest.java │ │ └── transaction │ │ │ └── ChronoSphereTransactionTest.java │ │ ├── testmodels │ │ ├── instance │ │ │ ├── AbstractTestModel.java │ │ │ ├── JohnDoeFamilyModel.java │ │ │ └── TestModel.java │ │ └── meta │ │ │ ├── GrabatsMetamodel.java │ │ │ └── PersonMetamodel.java │ │ └── utils │ │ ├── ChronoSphereTestUtils.java │ │ ├── EMFTestUtils.java │ │ └── factories │ │ ├── EMFEFactory.java │ │ └── EStoreEFactory.java │ └── resources │ ├── logback-test.xml │ └── org │ └── chronos │ └── chronosphere │ └── test │ └── metamodels │ └── socialnetwork.ecore ├── org.chronos.common.testing ├── build.gradle.bak ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── chronos │ │ │ └── common │ │ │ └── test │ │ │ ├── ChronosTestWatcher.java │ │ │ ├── ChronosUnitTest.java │ │ │ ├── junit │ │ │ ├── ExcludeCategories.java │ │ │ ├── PackageSuite.java │ │ │ ├── SuiteIncludes.java │ │ │ ├── SuitePackages.java │ │ │ └── categories │ │ │ │ ├── IntegrationTest.java │ │ │ │ ├── PerformanceTest.java │ │ │ │ ├── SlowTest.java │ │ │ │ ├── SystemTest.java │ │ │ │ └── UnitTest.java │ │ │ └── utils │ │ │ ├── Measure.java │ │ │ ├── NamedPayload.java │ │ │ ├── Statistic.java │ │ │ ├── TestUtils.java │ │ │ ├── TimeStatistics.java │ │ │ └── model │ │ │ └── person │ │ │ ├── Person.java │ │ │ └── PersonGenerator.java │ ├── kotlin │ │ └── org.chronos.common.testing.kotlin.ext │ │ │ └── TestExtensionFunctions.kt │ └── resources │ │ ├── firstNames.txt │ │ └── lastNames.txt │ └── test │ ├── java │ ├── org │ │ └── chronos │ │ │ └── common │ │ │ └── testing │ │ │ └── test │ │ │ └── cases │ │ │ └── PersonGeneratorTest.java │ └── thisIsJustForGit2.txt │ └── resources │ └── thisIsJustForGit3.txt ├── org.chronos.common ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── chronos │ │ │ └── common │ │ │ ├── annotation │ │ │ └── PersistentClass.java │ │ │ ├── autolock │ │ │ ├── AbstractAutoLock.java │ │ │ ├── AutoLock.java │ │ │ ├── AutoLockable.java │ │ │ ├── BasicAutoLock.java │ │ │ └── ReadWriteAutoLockable.java │ │ │ ├── builder │ │ │ ├── AbstractChronoBuilder.java │ │ │ └── ChronoBuilder.java │ │ │ ├── buildinfo │ │ │ ├── ChronosBuildConfiguration.java │ │ │ ├── ChronosBuildConfigurationImpl.java │ │ │ └── ChronosBuildInfo.java │ │ │ ├── configuration │ │ │ ├── AbstractConfiguration.java │ │ │ ├── ChronosConfiguration.java │ │ │ ├── ChronosConfigurationUtil.java │ │ │ ├── Comparison.java │ │ │ ├── Condition.java │ │ │ ├── ParameterMetadata.java │ │ │ ├── ParameterValueConverter.java │ │ │ ├── ParameterValueConverters.java │ │ │ └── annotation │ │ │ │ ├── EnumFactoryMethod.java │ │ │ │ ├── IgnoredIf.java │ │ │ │ ├── IgnoredIfConditions.java │ │ │ │ ├── Namespace.java │ │ │ │ ├── Parameter.java │ │ │ │ ├── RequiredIf.java │ │ │ │ ├── RequiredIfConditions.java │ │ │ │ ├── ValueAlias.java │ │ │ │ ├── ValueAliases.java │ │ │ │ └── ValueConverter.java │ │ │ ├── exceptions │ │ │ ├── ChronosConfigurationException.java │ │ │ ├── ChronosException.java │ │ │ ├── ChronosIOException.java │ │ │ ├── NotInstantiableException.java │ │ │ └── UnknownEnumLiteralException.java │ │ │ ├── logging │ │ │ └── ChronosLogMarker.java │ │ │ ├── serialization │ │ │ └── KryoManager.java │ │ │ ├── util │ │ │ ├── CacheUtils.java │ │ │ ├── ClasspathUtils.java │ │ │ ├── ObjectSizeCalculator.java │ │ │ └── ReflectionUtils.java │ │ │ └── version │ │ │ ├── ChronosVersion.java │ │ │ └── VersionKind.java │ └── resources │ │ ├── buildInfo.properties │ │ └── thisIsJustForGit.txt │ └── test │ ├── java │ └── org │ │ └── chronos │ │ └── common │ │ └── test │ │ ├── _suite │ │ └── ChronosCommonTestSuite.java │ │ └── cases │ │ ├── configuration │ │ ├── BooleanDependentConfiguration.java │ │ ├── ChronosConfigurationUtilTest.java │ │ └── MyConfiguration.java │ │ ├── serialization │ │ └── KryoManagerTest.java │ │ └── version │ │ └── ChronosVersionTest.java │ └── resources │ ├── booleanDependentConfiguration_correct.properties │ ├── booleanDependentConfiguration_correct2.properties │ ├── booleanDependentConfiguration_wrong.properties │ ├── logback-test.xml │ ├── myconfiguration_aliasing.properties │ ├── myconfiguration_correct1.properties │ ├── myconfiguration_correct2.properties │ ├── myconfiguration_enumFactoryMethod.properties │ ├── myconfiguration_error1.properties │ ├── myconfiguration_error2.properties │ ├── myconfiguration_superfluous1.properties │ └── myconfiguration_valueparser.properties ├── readme.md └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | **/out/** 3 | **/build/** 4 | **/*.class 5 | **/.gradle/** 6 | gradle.properties 7 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.gradle.kotlin.dsl.withType 2 | import org.jetbrains.kotlin.gradle.dsl.JvmTarget 3 | import org.jetbrains.kotlin.gradle.tasks.KotlinCompile 4 | 5 | plugins { 6 | alias(libs.plugins.kotlin.jvm) apply false 7 | alias(libs.plugins.versions) 8 | id("idea") 9 | } 10 | 11 | allprojects { 12 | 13 | repositories { 14 | mavenCentral() 15 | } 16 | 17 | } 18 | 19 | 20 | extra["mavenVersion"] = project.version 21 | 22 | allprojects { 23 | group = "org.chronos" 24 | version = "1.3.29-SNAPSHOT" 25 | 26 | tasks.withType().configureEach { 27 | compilerOptions { 28 | jvmTarget.set(JvmTarget.JVM_21) 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /markdownSources/chronoDb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/markdownSources/chronoDb.png -------------------------------------------------------------------------------- /markdownSources/chronoGraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/markdownSources/chronoGraph.png -------------------------------------------------------------------------------- /markdownSources/chronoSphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/markdownSources/chronoSphere.png -------------------------------------------------------------------------------- /markdownSources/chronosDeploymentOptions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/markdownSources/chronosDeploymentOptions.png -------------------------------------------------------------------------------- /markdownSources/chronosProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/markdownSources/chronosProject.png -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/BranchHeadStatistics.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api; 2 | 3 | import org.chronos.chronodb.internal.impl.BranchHeadStatisticsImpl; 4 | 5 | import static com.google.common.base.Preconditions.*; 6 | 7 | public interface BranchHeadStatistics { 8 | 9 | public long getTotalNumberOfEntries(); 10 | 11 | public long getNumberOfEntriesInHead(); 12 | 13 | public long getNumberOfEntriesInHistory(); 14 | 15 | public double getHeadHistoryRatio(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/NullSortPosition.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api 2 | 3 | enum class NullSortPosition { 4 | 5 | NULLS_FIRST { 6 | 7 | override fun reversed(): NullSortPosition { 8 | return NULLS_LAST 9 | } 10 | 11 | }, 12 | NULLS_LAST { 13 | 14 | override fun reversed(): NullSortPosition { 15 | return NULLS_FIRST 16 | } 17 | 18 | }; 19 | 20 | abstract fun reversed(): NullSortPosition 21 | 22 | companion object { 23 | 24 | @JvmField 25 | val DEFAULT = NULLS_LAST 26 | 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/Order.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api; 2 | 3 | /** 4 | * A general multi-purpose enumeration for any kind of ordering. 5 | * 6 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 7 | */ 8 | public enum Order { 9 | 10 | /** Represents ascending order, i.e. when iterating, every entry will be larger than the previous one. */ 11 | ASCENDING, 12 | 13 | /** Represents descending order, i.e. when iterating, every entry will be smaller than the previous one. */ 14 | DESCENDING 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/TextCompare.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api 2 | 3 | enum class TextCompare { 4 | 5 | STRICT { 6 | 7 | override fun > apply(value: T): T { 8 | return value 9 | } 10 | 11 | }, 12 | 13 | CASE_INSENSITIVE { 14 | 15 | @Suppress("UNCHECKED_CAST") 16 | override fun > apply(value: T): T { 17 | if(value is String){ 18 | return value.lowercase() as T 19 | }else{ 20 | return value 21 | } 22 | } 23 | 24 | }; 25 | 26 | companion object { 27 | 28 | @JvmField 29 | val DEFAULT = STRICT 30 | 31 | } 32 | 33 | abstract fun > apply(value: T): T 34 | 35 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/builder/database/ChronoDBBackendBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.builder.database; 2 | 3 | /** 4 | * Marker interface for all builders of ChronoDB backends. Used for type safety. 5 | * 6 | * @author martin.haeusler@uibk.ac.at -- initial contribution and API. 7 | * 8 | */ 9 | public interface ChronoDBBackendBuilder { 10 | } 11 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/builder/database/ChronoDBPropertyFileBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.builder.database; 2 | 3 | import org.chronos.chronodb.api.ChronoDB; 4 | import org.chronos.chronodb.internal.impl.ChronoDBBaseConfiguration; 5 | 6 | /** 7 | * A builder for all kinds of instances of {@link ChronoDB}, based on a *.properties file. 8 | * 9 | *

10 | * The resulting {@link ChronoDB} implementation is determined via the value of the 11 | * {@link ChronoDBBaseConfiguration#getBackendType()} property. 12 | * 13 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 14 | * 15 | */ 16 | public interface ChronoDBPropertyFileBuilder extends ChronoDBFinalizableBuilder { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/builder/database/spi/ChronoDBBackendProvider.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.builder.database.spi; 2 | 3 | import org.apache.commons.configuration2.Configuration; 4 | import org.chronos.chronodb.api.builder.database.ChronoDBBackendBuilder; 5 | import org.chronos.chronodb.internal.api.ChronoDBConfiguration; 6 | import org.chronos.chronodb.internal.api.ChronoDBInternal; 7 | 8 | public interface ChronoDBBackendProvider { 9 | 10 | public boolean matchesBackendName(String backendName); 11 | 12 | public Class getConfigurationClass(); 13 | 14 | public ChronoDBInternal instantiateChronoDB(Configuration configuration); 15 | 16 | public String getBackendName(); 17 | 18 | public TestSuitePlugin getTestSuitePlugin(); 19 | 20 | public ChronoDBBackendBuilder createBuilder(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/conflict/AtomicConflict.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.conflict; 2 | 3 | import org.chronos.chronodb.api.key.ChronoIdentifier; 4 | 5 | public interface AtomicConflict { 6 | 7 | public long getTransactionTimestamp(); 8 | 9 | public ChronoIdentifier getSourceKey(); 10 | 11 | public Object getSourceValue(); 12 | 13 | public ChronoIdentifier getTargetKey(); 14 | 15 | public Object getTargetValue(); 16 | 17 | public ChronoIdentifier getCommonAncestorKey(); 18 | 19 | public Object getCommonAncestorValue(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/dump/IncrementalBackupResult.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.dump; 2 | 3 | import java.io.File; 4 | 5 | import static com.google.common.base.Preconditions.*; 6 | 7 | public class IncrementalBackupResult { 8 | 9 | private File cibFile; 10 | private IncrementalBackupInfo metadata; 11 | 12 | public IncrementalBackupResult(File cibFile, IncrementalBackupInfo metadata){ 13 | checkNotNull(cibFile, "Precondition violation - argument 'cibFile' must not be NULL!"); 14 | checkNotNull(metadata, "Precondition violation - argument 'metadata' must not be NULL!"); 15 | this.cibFile = cibFile; 16 | this.metadata = metadata; 17 | } 18 | 19 | public File getCibFile() { 20 | return cibFile; 21 | } 22 | 23 | public IncrementalBackupInfo getMetadata() { 24 | return metadata; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/CacheGetResultNotPresentException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class CacheGetResultNotPresentException extends ChronoDBException { 4 | 5 | public CacheGetResultNotPresentException() { 6 | super(); 7 | } 8 | 9 | protected CacheGetResultNotPresentException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public CacheGetResultNotPresentException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public CacheGetResultNotPresentException(final String message) { 19 | super(message); 20 | } 21 | 22 | public CacheGetResultNotPresentException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBBackupException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBBackupException extends ChronoDBException { 4 | public ChronoDBBackupException() { 5 | } 6 | 7 | protected ChronoDBBackupException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 8 | super(message, cause, enableSuppression, writableStackTrace); 9 | } 10 | 11 | public ChronoDBBackupException(final String message, final Throwable cause) { 12 | super(message, cause); 13 | } 14 | 15 | public ChronoDBBackupException(final String message) { 16 | super(message); 17 | } 18 | 19 | public ChronoDBBackupException(final Throwable cause) { 20 | super(cause); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBBranchingException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBBranchingException extends ChronoDBException { 4 | 5 | public ChronoDBBranchingException() { 6 | super(); 7 | } 8 | 9 | public ChronoDBBranchingException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBBranchingException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBBranchingException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBBranchingException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBCommitConflictException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBCommitConflictException extends ChronoDBCommitException { 4 | 5 | public ChronoDBCommitConflictException() { 6 | super(); 7 | } 8 | 9 | protected ChronoDBCommitConflictException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBCommitConflictException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBCommitConflictException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBCommitConflictException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBCommitException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBCommitException extends ChronoDBTransactionException { 4 | 5 | public ChronoDBCommitException() { 6 | super(); 7 | } 8 | 9 | public ChronoDBCommitException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBCommitException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBCommitException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBCommitException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBConfigurationException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBConfigurationException extends ChronoDBException { 4 | 5 | public ChronoDBConfigurationException() { 6 | super(); 7 | } 8 | 9 | public ChronoDBConfigurationException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBConfigurationException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBConfigurationException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBConfigurationException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | import org.chronos.common.exceptions.ChronosException; 4 | 5 | public class ChronoDBException extends ChronosException { 6 | 7 | public ChronoDBException() { 8 | super(); 9 | } 10 | 11 | protected ChronoDBException(final String message, final Throwable cause, final boolean enableSuppression, 12 | final boolean writableStackTrace) { 13 | super(message, cause, enableSuppression, writableStackTrace); 14 | } 15 | 16 | public ChronoDBException(final String message, final Throwable cause) { 17 | super(message, cause); 18 | } 19 | 20 | public ChronoDBException(final String message) { 21 | super(message); 22 | } 23 | 24 | public ChronoDBException(final Throwable cause) { 25 | super(cause); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBIndexingException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBIndexingException extends ChronoDBException { 4 | 5 | public ChronoDBIndexingException() { 6 | super(); 7 | } 8 | 9 | protected ChronoDBIndexingException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBIndexingException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBIndexingException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBIndexingException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBQuerySyntaxException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBQuerySyntaxException extends ChronoDBException { 4 | 5 | public ChronoDBQuerySyntaxException() { 6 | super(); 7 | } 8 | 9 | protected ChronoDBQuerySyntaxException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBQuerySyntaxException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBQuerySyntaxException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBQuerySyntaxException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBSerializationException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBSerializationException extends ChronoDBException { 4 | 5 | public ChronoDBSerializationException() { 6 | super(); 7 | } 8 | 9 | public ChronoDBSerializationException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBSerializationException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBSerializationException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBSerializationException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBStorageBackendException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBStorageBackendException extends ChronoDBException { 4 | 5 | public ChronoDBStorageBackendException() { 6 | super(); 7 | } 8 | 9 | public ChronoDBStorageBackendException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBStorageBackendException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBStorageBackendException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBStorageBackendException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoDBTransactionException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoDBTransactionException extends ChronoDBException { 4 | 5 | public ChronoDBTransactionException() { 6 | super(); 7 | } 8 | 9 | public ChronoDBTransactionException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoDBTransactionException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoDBTransactionException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoDBTransactionException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ChronoTransactionClosedException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ChronoTransactionClosedException extends ChronoDBTransactionException { 4 | 5 | public ChronoTransactionClosedException() { 6 | super(); 7 | } 8 | 9 | public ChronoTransactionClosedException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoTransactionClosedException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoTransactionClosedException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoTransactionClosedException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/DatebackException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class DatebackException extends ChronoDBException { 4 | 5 | public DatebackException() { 6 | super(); 7 | } 8 | 9 | protected DatebackException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public DatebackException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public DatebackException(final String message) { 19 | super(message); 20 | } 21 | 22 | public DatebackException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/IndexerConflictException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class IndexerConflictException extends ChronoDBIndexingException { 4 | 5 | public IndexerConflictException() { 6 | super(); 7 | } 8 | 9 | protected IndexerConflictException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public IndexerConflictException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public IndexerConflictException(final String message) { 19 | super(message); 20 | } 21 | 22 | public IndexerConflictException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/InvalidIndexAccessException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class InvalidIndexAccessException extends ChronoDBIndexingException { 4 | 5 | public InvalidIndexAccessException() { 6 | super(); 7 | } 8 | 9 | protected InvalidIndexAccessException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 10 | super(message, cause, enableSuppression, writableStackTrace); 11 | } 12 | 13 | public InvalidIndexAccessException(final String message, final Throwable cause) { 14 | super(message, cause); 15 | } 16 | 17 | public InvalidIndexAccessException(final String message) { 18 | super(message); 19 | } 20 | 21 | public InvalidIndexAccessException(final Throwable cause) { 22 | super(cause); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/InvalidTransactionBranchException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class InvalidTransactionBranchException extends ChronoDBTransactionException { 4 | 5 | public InvalidTransactionBranchException() { 6 | super(); 7 | } 8 | 9 | public InvalidTransactionBranchException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public InvalidTransactionBranchException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public InvalidTransactionBranchException(final String message) { 19 | super(message); 20 | } 21 | 22 | public InvalidTransactionBranchException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/InvalidTransactionTimestampException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class InvalidTransactionTimestampException extends ChronoDBTransactionException { 4 | 5 | public InvalidTransactionTimestampException() { 6 | super(); 7 | } 8 | 9 | public InvalidTransactionTimestampException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public InvalidTransactionTimestampException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public InvalidTransactionTimestampException(final String message) { 19 | super(message); 20 | } 21 | 22 | public InvalidTransactionTimestampException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/JdbcTableException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class JdbcTableException extends RuntimeException { 4 | 5 | public JdbcTableException() { 6 | super(); 7 | } 8 | 9 | public JdbcTableException(final String message) { 10 | super(message); 11 | } 12 | 13 | public JdbcTableException(final Throwable cause) { 14 | super(cause); 15 | } 16 | 17 | public JdbcTableException(final String message, final Throwable cause) { 18 | super(message, cause); 19 | } 20 | 21 | protected JdbcTableException(final String message, final Throwable cause, final boolean enableSuppression, 22 | final boolean writableStackTrace) { 23 | super(message, cause, enableSuppression, writableStackTrace); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/TransactionIsReadOnlyException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class TransactionIsReadOnlyException extends ChronoDBTransactionException { 4 | 5 | public TransactionIsReadOnlyException() { 6 | super(); 7 | } 8 | 9 | protected TransactionIsReadOnlyException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public TransactionIsReadOnlyException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public TransactionIsReadOnlyException(final String message) { 19 | super(message); 20 | } 21 | 22 | public TransactionIsReadOnlyException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/UnknownIndexException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class UnknownIndexException extends ChronoDBIndexingException { 4 | 5 | public UnknownIndexException() { 6 | super(); 7 | } 8 | 9 | protected UnknownIndexException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public UnknownIndexException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public UnknownIndexException(final String message) { 19 | super(message); 20 | } 21 | 22 | public UnknownIndexException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/UnknownKeyspaceException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class UnknownKeyspaceException extends ChronoDBException { 4 | 5 | public UnknownKeyspaceException() { 6 | super(); 7 | } 8 | 9 | public UnknownKeyspaceException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public UnknownKeyspaceException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public UnknownKeyspaceException(final String message) { 19 | super(message); 20 | } 21 | 22 | public UnknownKeyspaceException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/exceptions/ValueTypeMismatchException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.exceptions; 2 | 3 | public class ValueTypeMismatchException extends ChronoDBSerializationException { 4 | 5 | public ValueTypeMismatchException() { 6 | super(); 7 | } 8 | 9 | public ValueTypeMismatchException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ValueTypeMismatchException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ValueTypeMismatchException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ValueTypeMismatchException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/kotlin/ReadWriteAutoLockableExtensions.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.kotlin 2 | 3 | import org.chronos.common.autolock.ReadWriteAutoLockable 4 | 5 | object ReadWriteAutoLockableExtensions { 6 | 7 | inline fun ReadWriteAutoLockable.withNonExclusiveLock(action: ()->T): T { 8 | return this.lockNonExclusive().use { 9 | action() 10 | } 11 | } 12 | 13 | inline fun ReadWriteAutoLockable.withExclusiveLock(action: ()->T): T { 14 | return this.lockExclusive().use { 15 | action() 16 | } 17 | } 18 | 19 | 20 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/api/query/ContainmentCondition.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.api.query; 2 | 3 | /** 4 | * A {@link ContainmentCondition} is a {@link Condition} on any values, checking for (non-)containment in a known collection. 5 | * 6 | * @author martin.haeusler@txture.io -- Initial Contribution and API 7 | * 8 | */ 9 | public interface ContainmentCondition extends Condition { 10 | 11 | /** 12 | * Negates this condition. 13 | * 14 | * @return The negated condition. 15 | */ 16 | public ContainmentCondition negate(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/inmemory/InMemoryChronoDBConfiguration.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.inmemory; 2 | 3 | import org.chronos.chronodb.internal.impl.ChronoDBBaseConfiguration; 4 | 5 | public class InMemoryChronoDBConfiguration extends ChronoDBBaseConfiguration { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/inmemory/InMemoryFeatures.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.inmemory; 2 | 3 | import org.chronos.chronodb.api.ChronoDBFeatures; 4 | 5 | public class InMemoryFeatures implements ChronoDBFeatures { 6 | 7 | @Override 8 | public boolean isPersistent() { 9 | return false; 10 | } 11 | 12 | @Override 13 | public boolean isRolloverSupported() { 14 | return false; 15 | } 16 | 17 | @Override 18 | public boolean isIncrementalBackupSupported() { 19 | return false; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/inmemory/InMemorySerializationManager.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.inmemory; 2 | 3 | import org.chronos.chronodb.api.SerializationManager; 4 | import org.chronos.common.serialization.KryoManager; 5 | 6 | public class InMemorySerializationManager implements SerializationManager { 7 | 8 | public InMemorySerializationManager() { 9 | } 10 | 11 | @Override 12 | public byte[] serialize(final Object object) { 13 | return KryoManager.serialize(object); 14 | } 15 | 16 | @Override 17 | public Object deserialize(final byte[] serialForm) { 18 | return KryoManager.deserialize(serialForm); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/inmemory/builder/ChronoDBInMemoryBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.inmemory.builder; 2 | 3 | import org.chronos.chronodb.api.ChronoDB; 4 | import org.chronos.chronodb.api.builder.database.ChronoDBBackendBuilder; 5 | import org.chronos.chronodb.api.builder.database.ChronoDBFinalizableBuilder; 6 | 7 | /** 8 | * A builder for in-memory instances of {@link ChronoDB}. 9 | * 10 | *

11 | * In-memory instance have no persistent representation; all changes to them are gone when the JVM terminates and/or the 12 | * garbage collector removes the ChronoDB instance from memory. 13 | * 14 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 15 | * 16 | */ 17 | public interface ChronoDBInMemoryBuilder extends ChronoDBFinalizableBuilder, ChronoDBBackendBuilder { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/inmemory/builder/ChronoDBInMemoryBuilderImpl.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.inmemory.builder; 2 | 3 | import org.chronos.chronodb.inmemory.InMemoryChronoDB; 4 | import org.chronos.chronodb.internal.api.ChronoDBConfiguration; 5 | import org.chronos.chronodb.internal.impl.builder.database.AbstractChronoDBFinalizableBuilder; 6 | 7 | public class ChronoDBInMemoryBuilderImpl extends AbstractChronoDBFinalizableBuilder 8 | implements ChronoDBInMemoryBuilder { 9 | 10 | public ChronoDBInMemoryBuilderImpl() { 11 | this.withProperty(ChronoDBConfiguration.STORAGE_BACKEND, InMemoryChronoDB.BACKEND_NAME); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/BranchEventListener.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api; 2 | 3 | import org.chronos.chronodb.api.Branch; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public interface BranchEventListener { 7 | 8 | public void onBranchCreated(@NotNull Branch branch); 9 | 10 | public void onBranchDeleted(@NotNull Branch branch); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/CacheType.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api 2 | 3 | enum class CacheType { 4 | MOSAIC, 5 | HEAD_FIRST; 6 | 7 | companion object { 8 | @JvmStatic 9 | fun fromString(text: String?): CacheType { 10 | return when (text?.lowercase()?.trim()) { 11 | "mosaic", null -> MOSAIC 12 | "headfirst", "head-first", "head_first" -> HEAD_FIRST 13 | else -> MOSAIC 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/CommitTimestampProvider.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api; 2 | 3 | public interface CommitTimestampProvider { 4 | 5 | public long getNextCommitTimestamp(long nowOnBranch); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/DatebackManagerInternal.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api; 2 | 3 | import org.chronos.chronodb.api.DatebackManager; 4 | import org.chronos.chronodb.internal.api.dateback.log.DatebackOperation; 5 | 6 | public interface DatebackManagerInternal extends DatebackManager { 7 | 8 | /** 9 | * Adds the given operation to the databack log. 10 | * 11 | *

12 | * /!\ For internal purposes only. 13 | *

14 | * 15 | * @param operation The operation to add to the log. Must not be null. 16 | */ 17 | public void addDatebackOperationToLog(DatebackOperation operation); 18 | 19 | public void deleteLogsForBranch(String branchName); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/StatisticsManagerInternal.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api; 2 | 3 | import org.chronos.chronodb.api.StatisticsManager; 4 | 5 | public interface StatisticsManagerInternal extends StatisticsManager { 6 | 7 | public void updateBranchHeadStatistics(String branchName, long inserts, long updates, long deletes); 8 | 9 | public void clearBranchHeadStatistics(); 10 | 11 | public void clearBranchHeadStatistics(String branchName); 12 | } 13 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/DatebackLogger.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | @FunctionalInterface 4 | public interface DatebackLogger { 5 | 6 | public void logDatebackOperation(DatebackOperation operation); 7 | 8 | } 9 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/DatebackOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | public interface DatebackOperation { 4 | 5 | public String getId(); 6 | 7 | public long getWallClockTime(); 8 | 9 | public String getBranch(); 10 | 11 | public boolean affectsTimestamp(long timestamp); 12 | 13 | public long getEarliestAffectedTimestamp(); 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/IInjectEntriesOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | public interface IInjectEntriesOperation extends DatebackOperation { 4 | 5 | long getOperationTimestamp(); 6 | 7 | boolean isCommitMetadataOverride(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/IPurgeCommitsOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | import java.util.Set; 4 | 5 | public interface IPurgeCommitsOperation extends DatebackOperation { 6 | 7 | Set getCommitTimestamps(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/IPurgeEntryOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | public interface IPurgeEntryOperation extends DatebackOperation { 4 | 5 | String getKey(); 6 | 7 | String getKeyspace(); 8 | 9 | long getOperationTimestamp(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/IPurgeKeyOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | public interface IPurgeKeyOperation extends DatebackOperation { 4 | 5 | String getKeyspace(); 6 | 7 | String getKey(); 8 | 9 | long getFromTimestamp(); 10 | 11 | long getToTimestamp(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/IPurgeKeyspaceOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | public interface IPurgeKeyspaceOperation extends DatebackOperation { 4 | 5 | String getKeyspace(); 6 | 7 | long getFromTimestamp(); 8 | 9 | long getToTimestamp(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/ITransformCommitOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | public interface ITransformCommitOperation extends DatebackOperation { 4 | 5 | long getCommitTimestamp(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/ITransformValuesOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | import java.util.Set; 4 | 5 | public interface ITransformValuesOperation extends DatebackOperation { 6 | 7 | Set getCommitTimestamps(); 8 | 9 | String getKeyspace(); 10 | 11 | String getKey(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/dateback/log/IUpdateCommitMetadataOperation.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.dateback.log; 2 | 3 | public interface IUpdateCommitMetadataOperation extends DatebackOperation { 4 | 5 | long getCommitTimestamp(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/migration/ChronosMigration.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.migration; 2 | 3 | import org.chronos.chronodb.internal.api.ChronoDBInternal; 4 | 5 | public interface ChronosMigration { 6 | 7 | public void execute(DBTYPE chronoDB); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/migration/annotations/Migration.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.migration.annotations; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Target(ElementType.TYPE) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface Migration { 13 | 14 | String from(); 15 | 16 | String to(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/api/query/searchspec/ContainmentSearchSpecification.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.api.query.searchspec; 2 | 3 | import org.chronos.chronodb.api.query.ContainmentCondition; 4 | 5 | import java.util.Set; 6 | 7 | public interface ContainmentSearchSpecification extends SearchSpecification> { 8 | 9 | @Override 10 | public ContainmentCondition getCondition(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/builder/database/AbstractChronoDBBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.builder.database; 2 | 3 | import org.apache.commons.configuration2.Configuration; 4 | import org.apache.commons.configuration2.MapConfiguration; 5 | import org.chronos.common.builder.AbstractChronoBuilder; 6 | import org.chronos.common.builder.ChronoBuilder; 7 | 8 | public abstract class AbstractChronoDBBuilder> extends AbstractChronoBuilder 9 | implements ChronoBuilder { 10 | 11 | protected Configuration getConfiguration() { 12 | return new MapConfiguration(this.getProperties()); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/cache/util/lru/RangedGetResultUsageRegistry.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.cache.util.lru; 2 | 3 | import org.chronos.chronodb.internal.api.GetResult; 4 | 5 | public class RangedGetResultUsageRegistry extends DefaultUsageRegistry> { 6 | 7 | public RangedGetResultUsageRegistry() { 8 | super(RangedGetResultUsageRegistry::extractTopic); 9 | } 10 | 11 | private static Object extractTopic(final GetResult element) { 12 | return element.getRequestedKey(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/conflict/AncestorFetcher.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.conflict; 2 | 3 | import org.apache.commons.lang3.tuple.Pair; 4 | import org.chronos.chronodb.api.key.ChronoIdentifier; 5 | 6 | public interface AncestorFetcher { 7 | 8 | public Pair findCommonAncestor(long transactionTimestmp, ChronoIdentifier source, 9 | ChronoIdentifier target); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/conflict/strategies/DoNotMergeStrategy.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.conflict.strategies; 2 | 3 | import org.chronos.chronodb.api.conflict.AtomicConflict; 4 | import org.chronos.chronodb.api.conflict.ConflictResolutionStrategy; 5 | import org.chronos.chronodb.api.exceptions.ChronoDBCommitConflictException; 6 | 7 | public class DoNotMergeStrategy implements ConflictResolutionStrategy { 8 | 9 | public static final DoNotMergeStrategy INSTANCE = new DoNotMergeStrategy(); 10 | 11 | protected DoNotMergeStrategy() { 12 | 13 | } 14 | 15 | @Override 16 | public Object resolve(final AtomicConflict conflict) { 17 | throw new ChronoDBCommitConflictException("There are conflicting commits on " 18 | + conflict.getSourceKey().toQualifiedKey() + " (and potentially others)!"); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/conflict/strategies/OverwriteWithSourceStrategy.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.conflict.strategies; 2 | 3 | import org.chronos.chronodb.api.conflict.AtomicConflict; 4 | import org.chronos.chronodb.api.conflict.ConflictResolutionStrategy; 5 | 6 | public class OverwriteWithSourceStrategy implements ConflictResolutionStrategy { 7 | 8 | public static final OverwriteWithSourceStrategy INSTANCE = new OverwriteWithSourceStrategy(); 9 | 10 | protected OverwriteWithSourceStrategy() { 11 | } 12 | 13 | @Override 14 | public Object resolve(final AtomicConflict conflict) { 15 | return conflict.getSourceValue(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/conflict/strategies/OverwriteWithTargetStrategy.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.conflict.strategies; 2 | 3 | import org.chronos.chronodb.api.conflict.AtomicConflict; 4 | import org.chronos.chronodb.api.conflict.ConflictResolutionStrategy; 5 | 6 | public class OverwriteWithTargetStrategy implements ConflictResolutionStrategy { 7 | 8 | public static final OverwriteWithTargetStrategy INSTANCE = new OverwriteWithTargetStrategy(); 9 | 10 | protected OverwriteWithTargetStrategy() { 11 | } 12 | 13 | @Override 14 | public Object resolve(final AtomicConflict conflict) { 15 | return conflict.getTargetValue(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/dump/base/ChronoDBDump.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.dump.base; 2 | 3 | import org.chronos.chronodb.internal.impl.dump.entry.ChronoDBDumpEntry; 4 | import org.chronos.chronodb.internal.impl.dump.meta.ChronoDBDumpMetadata; 5 | 6 | public interface ChronoDBDump extends Iterable>, AutoCloseable { 7 | 8 | public ChronoDBDumpMetadata getDumpMetadata(); 9 | 10 | @Override 11 | public void close(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/dump/base/ChronoDBDumpElement.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.dump.base; 2 | 3 | public abstract class ChronoDBDumpElement { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/dump/meta/IIndexerDumpMetadata.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.dump.meta; 2 | 3 | public interface IIndexerDumpMetadata { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/engines/base/BranchDirectoryNameResolver.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.engines.base; 2 | 3 | @FunctionalInterface 4 | public interface BranchDirectoryNameResolver { 5 | 6 | public String createDirectoryNameForBranchName(String branchName); 7 | 8 | public static final BranchDirectoryNameResolver NULL_NAME_RESOLVER = branchName -> null; 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/index/IndexingOption.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.index 2 | 3 | interface IndexingOption { 4 | 5 | companion object { 6 | 7 | @JvmStatic 8 | fun assumeNoPriorValues(): IndexingOption { 9 | return StandardIndexingOption.ASSUME_NO_PRIOR_VALUES 10 | } 11 | 12 | } 13 | 14 | 15 | val inheritable: Boolean 16 | 17 | fun copy(): IndexingOption 18 | 19 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/index/StandardIndexingOption.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.index 2 | 3 | enum class StandardIndexingOption : IndexingOption { 4 | 5 | /** 6 | * Starts the secondary index with the assumption that all 7 | * objects prior to the index introduction do not have the indexed property. 8 | * 9 | * This assumption allows for faster re-indexing, but can lead to wrong 10 | * query results if the assumption doesn't hold on the actual data. 11 | */ 12 | ASSUME_NO_PRIOR_VALUES { 13 | 14 | override val inheritable: Boolean = true 15 | 16 | }; 17 | 18 | override fun copy(): IndexingOption { 19 | // enum values are immutable and therefore don't need copying. 20 | return this 21 | } 22 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/index/cursor/RawIndexCursor.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.index.cursor 2 | 3 | import org.chronos.chronodb.api.Order 4 | 5 | /** 6 | * A [RawIndexCursor] is the basic building block for iterating over a secondary index. 7 | * 8 | * In contrast to the more sophisticated [IndexScanCursor], the [RawIndexCursor] returns 9 | * ALL entries of the backing store unfiltered. 10 | * 11 | * This interface also offers an [isVisibleForTimestamp] check that allows the user to 12 | * check the current entry for visibility. 13 | */ 14 | interface RawIndexCursor>: AutoCloseable { 15 | 16 | fun next(): Boolean 17 | 18 | val primaryKey: String 19 | 20 | val indexValue: V 21 | 22 | val order: Order 23 | 24 | fun isVisibleForTimestamp(timestamp: Long): Boolean 25 | 26 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/index/tree/IndexChanges.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.index 2 | 3 | import org.chronos.chronodb.api.SecondaryIndex 4 | 5 | class IndexChanges( 6 | val addedIndices: Set = emptySet(), 7 | val removedIndices: Set = emptySet(), 8 | val updatedIndices: Set = emptySet() 9 | ) { 10 | 11 | companion object { 12 | 13 | val EMPTY = IndexChanges(emptySet(), emptySet(), emptySet()) 14 | 15 | } 16 | 17 | fun addAll(changes: IndexChanges): IndexChanges { 18 | return IndexChanges( 19 | this.addedIndices + changes.addedIndices, 20 | this.removedIndices + changes.removedIndices, 21 | this.updatedIndices + changes.updatedIndices 22 | ) 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/TextMatchMode.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query; 2 | 3 | import org.chronos.chronodb.api.query.Condition; 4 | 5 | /** 6 | * A simple enumeration that decides how to match a text query against the index. 7 | * 8 | *

9 | * Usually used in conjunction with a {@link Condition}. 10 | * 11 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 12 | * 13 | */ 14 | public enum TextMatchMode { 15 | 16 | /** Strict text matching (i.e. respecting upper- & lowercase differences). */ 17 | STRICT, 18 | 19 | /** Case insensitive matching. */ 20 | CASE_INSENSITIVE; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/condition/NegatedCondition.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.condition; 2 | 3 | import org.chronos.chronodb.api.query.Condition; 4 | 5 | public interface NegatedCondition extends Condition { 6 | 7 | @Override 8 | default boolean isNegated() { 9 | return true; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/condition/NegatedNumberCondition.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.condition; 2 | 3 | import org.chronos.chronodb.api.query.NumberCondition; 4 | 5 | public interface NegatedNumberCondition extends NumberCondition, NegatedCondition { 6 | 7 | @Override 8 | default boolean applies(final long value, final long searchValue) { 9 | return this.negate().applies(value, searchValue) == false; 10 | } 11 | 12 | @Override 13 | public default boolean applies(final double value, final double searchValue, final double equalityTolerance) { 14 | return this.negate().applies(value, searchValue, equalityTolerance) == false; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/condition/NegatedStringCondition.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.condition; 2 | 3 | import org.chronos.chronodb.api.query.StringCondition; 4 | import org.chronos.chronodb.internal.impl.query.TextMatchMode; 5 | 6 | public interface NegatedStringCondition extends StringCondition, NegatedCondition { 7 | 8 | @Override 9 | public StringCondition negate(); 10 | 11 | @Override 12 | default boolean applies(final String text, final String searchValue, final TextMatchMode matchMode) { 13 | return this.negate().applies(text, searchValue, matchMode) == false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/ast/BinaryQueryOperator.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.ast; 2 | 3 | public enum BinaryQueryOperator { 4 | 5 | AND, OR 6 | } 7 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/ast/ChronoDBQueryImpl.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.ast; 2 | 3 | import org.chronos.chronodb.internal.api.query.ChronoDBQuery; 4 | 5 | public class ChronoDBQueryImpl implements ChronoDBQuery { 6 | 7 | private final String keyspace; 8 | private final QueryElement rootElement; 9 | 10 | public ChronoDBQueryImpl(final String keyspace, final QueryElement element) { 11 | this.keyspace = keyspace; 12 | this.rootElement = element; 13 | } 14 | 15 | @Override 16 | public String getKeyspace() { 17 | return this.keyspace; 18 | } 19 | 20 | @Override 21 | public QueryElement getRootElement() { 22 | return this.rootElement; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "Query[keyspace='" + this.keyspace + "', AST=" + this.rootElement + "]"; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/ast/QueryElement.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.ast; 2 | 3 | import org.chronos.chronodb.internal.api.query.ChronoDBQuery; 4 | 5 | /** 6 | * A {@link QueryElement} represents a single element in the Abstract Syntax Tree (AST) of a {@link ChronoDBQuery}. 7 | * 8 | *

9 | * Please note that all instances of classes that implement this interface are assumed to be immutable. 10 | * 11 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 12 | * 13 | */ 14 | public interface QueryElement { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/token/AndToken.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.token; 2 | 3 | import org.chronos.chronodb.internal.impl.query.parser.ast.BinaryQueryOperator; 4 | 5 | /** 6 | * An {@link AndToken} represents a binary relation between two query expressions using the 7 | * {@link BinaryQueryOperator#AND}. 8 | * 9 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 10 | * 11 | */ 12 | public class AndToken implements QueryToken { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/token/BeginToken.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.token; 2 | 3 | import org.chronos.chronodb.internal.api.query.ChronoDBQuery; 4 | 5 | /** 6 | * A {@link BeginToken} is used in conjunction with an {@link EndToken} to form matching braces for precedence handling 7 | * in a {@link ChronoDBQuery}. 8 | * 9 | *

10 | * Please note that this is essentially the same as round braces in mathematical expressions. The reason that the 11 | * concept is called "begin" and "end" here is that Java does not allow braces for method names. 12 | * 13 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 14 | * 15 | */ 16 | public class BeginToken implements QueryToken { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/token/EndOfInputToken.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.token; 2 | 3 | import org.chronos.chronodb.internal.api.query.QueryTokenStream; 4 | 5 | /** 6 | * An {@link EndOfInputToken} marks the end of the input in an {@link QueryTokenStream}. 7 | * 8 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 9 | * 10 | */ 11 | public class EndOfInputToken implements QueryToken { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/token/EndToken.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.token; 2 | 3 | import org.chronos.chronodb.internal.api.query.ChronoDBQuery; 4 | 5 | /** 6 | * A {@link EndToken} is used in conjunction with an {@link BeginToken} to form matching braces for precedence handling 7 | * in a {@link ChronoDBQuery}. 8 | * 9 | *

10 | * Please note that this is essentially the same as round braces in mathematical expressions. The reason that the 11 | * concept is called "begin" and "end" here is that Java does not allow braces for method names. 12 | * 13 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 14 | * 15 | */ 16 | public class EndToken implements QueryToken { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/token/NotToken.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.token; 2 | 3 | /** 4 | * A {@link NotToken} negates the result of the subsequent query statements. 5 | * 6 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 7 | * 8 | */ 9 | public class NotToken implements QueryToken { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/token/OrToken.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.token; 2 | 3 | import org.chronos.chronodb.internal.impl.query.parser.ast.BinaryQueryOperator; 4 | 5 | /** 6 | * An {@link AndToken} represents a binary relation between two query expressions using the 7 | * {@link BinaryQueryOperator#OR}. 8 | * 9 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 10 | * 11 | */ 12 | public class OrToken implements QueryToken { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/query/parser/token/QueryToken.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.query.parser.token; 2 | 3 | import org.chronos.chronodb.api.builder.query.QueryBuilder; 4 | import org.chronos.chronodb.internal.api.query.ChronoDBQuery; 5 | 6 | /** 7 | * A {@link QueryToken} represents a single, lexicographic element in a sequence that defines a {@link ChronoDBQuery}. 8 | * 9 | *

10 | * Instances of classes that implement this interface are usually produced by a {@link QueryBuilder} (or related class). 11 | * 12 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 13 | * 14 | */ 15 | public interface QueryToken { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/impl/stream/AbstractCloseableIterator.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.impl.stream; 2 | 3 | import org.chronos.chronodb.internal.api.stream.CloseableIterator; 4 | 5 | public abstract class AbstractCloseableIterator implements CloseableIterator { 6 | 7 | private boolean closed; 8 | 9 | @Override 10 | public final boolean hasNext() { 11 | if (this.closed) { 12 | return false; 13 | } 14 | return this.hasNextInternal(); 15 | } 16 | 17 | @Override 18 | public final void close() { 19 | if (this.isClosed()) { 20 | return; 21 | } 22 | this.closeInternal(); 23 | this.closed = true; 24 | } 25 | 26 | @Override 27 | public final boolean isClosed() { 28 | return this.closed; 29 | } 30 | 31 | protected abstract boolean hasNextInternal(); 32 | 33 | protected abstract void closeInternal(); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/java/org/chronos/chronodb/internal/util/ImmutableMapEntry.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.internal.util; 2 | 3 | import java.util.Map; 4 | 5 | public class ImmutableMapEntry implements Map.Entry { 6 | 7 | public static ImmutableMapEntry create(final K key, final V value) { 8 | return new ImmutableMapEntry(key, value); 9 | } 10 | 11 | private final K key; 12 | private final V value; 13 | 14 | public ImmutableMapEntry(final K key, final V value) { 15 | this.key = key; 16 | this.value = value; 17 | } 18 | 19 | @Override 20 | public K getKey() { 21 | return this.key; 22 | } 23 | 24 | @Override 25 | public V getValue() { 26 | return this.value; 27 | } 28 | 29 | @Override 30 | public V setValue(final V value) { 31 | throw new UnsupportedOperationException("setValue() is not supported on an ImmutableMapEntry!"); 32 | } 33 | 34 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/main/resources/META-INF/services/org.chronos.chronodb.api.builder.database.spi.ChronoDBBackendProvider: -------------------------------------------------------------------------------- 1 | org.chronos.chronodb.inmemory.provider.InMemoryChronoDBBackendProvider -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/_suite/ChronoDBTestSuite.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test._suite; 2 | 3 | import org.chronos.common.test.junit.ExcludeCategories; 4 | import org.chronos.common.test.junit.PackageSuite; 5 | import org.chronos.common.test.junit.SuitePackages; 6 | import org.chronos.common.test.junit.categories.PerformanceTest; 7 | import org.chronos.common.test.junit.categories.SlowTest; 8 | import org.junit.experimental.categories.Category; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.Suite; 11 | 12 | @Category(Suite.class) 13 | @RunWith(PackageSuite.class) 14 | @SuitePackages("org.chronos.chronodb.test") 15 | @ExcludeCategories({PerformanceTest.class, SlowTest.class}) 16 | public class ChronoDBTestSuite { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/base/ChronoDBUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.base; 2 | 3 | import org.chronos.chronodb.api.Branch; 4 | import org.chronos.chronodb.api.ChronoDB; 5 | import org.chronos.chronodb.api.ChronoDBConstants; 6 | import org.chronos.chronodb.internal.api.BranchInternal; 7 | import org.chronos.chronodb.internal.api.TemporalKeyValueStore; 8 | import org.chronos.common.test.ChronosUnitTest; 9 | 10 | public class ChronoDBUnitTest extends ChronosUnitTest { 11 | 12 | protected TemporalKeyValueStore getMasterTkvs(final ChronoDB db) { 13 | return this.getTkvs(db, ChronoDBConstants.MASTER_BRANCH_IDENTIFIER); 14 | } 15 | 16 | protected TemporalKeyValueStore getTkvs(final ChronoDB db, final String branchName) { 17 | Branch branch = db.getBranchManager().getBranch(branchName); 18 | return ((BranchInternal) branch).getTemporalKeyValueStore(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/base/InstantiateChronosWith.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.base; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Repeatable; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | @Documented 11 | @Target(ElementType.METHOD) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Repeatable(InstantiateChronosWithRepeatable.class) 14 | public @interface InstantiateChronosWith { 15 | 16 | public String property(); 17 | 18 | public String value(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/base/InstantiateChronosWithRepeatable.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.base; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Retention(RetentionPolicy.RUNTIME) 11 | @Target(ElementType.METHOD) 12 | public @interface InstantiateChronosWithRepeatable { 13 | 14 | public InstantiateChronosWith[] value(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/builder/ChronoDBCreationTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.builder; 2 | 3 | import org.chronos.chronodb.api.ChronoDB; 4 | import org.chronos.chronodb.test.base.AllChronoDBBackendsTest; 5 | import org.chronos.common.test.junit.categories.IntegrationTest; 6 | import org.junit.Test; 7 | import org.junit.experimental.categories.Category; 8 | 9 | import static org.junit.Assert.*; 10 | 11 | @Category(IntegrationTest.class) 12 | public class ChronoDBCreationTest extends AllChronoDBBackendsTest { 13 | 14 | @Test 15 | public void dbCreationWorks() { 16 | ChronoDB chronoDB = this.getChronoDB(); 17 | assertNotNull("Failed to instantiate ChronoDB on Backend '" + this.getChronoBackendName() + "'!", chronoDB); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/migration/chainA/MigrationA1.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.migration.chainA; 2 | 3 | import org.chronos.chronodb.internal.api.ChronoDBInternal; 4 | import org.chronos.chronodb.internal.api.migration.ChronosMigration; 5 | import org.chronos.chronodb.internal.api.migration.annotations.Migration; 6 | 7 | @Migration(from = "0.5.0", to = "0.5.1") 8 | public class MigrationA1 implements ChronosMigration { 9 | 10 | @Override 11 | public void execute(final ChronoDBInternal chronoDB) { 12 | 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/migration/chainA/MigrationA2.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.migration.chainA; 2 | 3 | import org.chronos.chronodb.internal.api.ChronoDBInternal; 4 | import org.chronos.chronodb.internal.api.migration.ChronosMigration; 5 | import org.chronos.chronodb.internal.api.migration.annotations.Migration; 6 | 7 | @Migration(from = "0.5.1", to = "0.5.2") 8 | public class MigrationA2 implements ChronosMigration { 9 | 10 | @Override 11 | public void execute(final ChronoDBInternal chronoDB) { 12 | 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/migration/chainA/MigrationA3.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.migration.chainA; 2 | 3 | import org.chronos.chronodb.internal.api.ChronoDBInternal; 4 | import org.chronos.chronodb.internal.api.migration.ChronosMigration; 5 | import org.chronos.chronodb.internal.api.migration.annotations.Migration; 6 | 7 | @Migration(from = "0.6.4", to = "0.7.0") 8 | public class MigrationA3 implements ChronosMigration { 9 | 10 | @Override 11 | public void execute(final ChronoDBInternal chronoDB) { 12 | 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/migration/chainB/MigrationB1.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.migration.chainB; 2 | 3 | import org.chronos.chronodb.internal.api.ChronoDBInternal; 4 | import org.chronos.chronodb.internal.api.migration.ChronosMigration; 5 | import org.chronos.chronodb.internal.api.migration.annotations.Migration; 6 | 7 | @Migration(from = "0.5.3", to = "0.5.4") 8 | public class MigrationB1 implements ChronosMigration { 9 | 10 | @Override 11 | public void execute(final ChronoDBInternal chronoDB) { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/migration/chainB/MigrationB2.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.migration.chainB; 2 | 3 | import org.chronos.chronodb.internal.api.ChronoDBInternal; 4 | import org.chronos.chronodb.internal.api.migration.ChronosMigration; 5 | import org.chronos.chronodb.internal.api.migration.annotations.Migration; 6 | 7 | @Migration(from = "0.5.1", to = "0.6.0") 8 | public class MigrationB2 implements ChronosMigration { 9 | 10 | @Override 11 | public void execute(final ChronoDBInternal chronoDB) { 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/util/model/person/FavoriteColorIndexer.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.util.model.person; 2 | 3 | import org.chronos.common.test.utils.model.person.Person; 4 | 5 | import java.util.Collections; 6 | import java.util.Set; 7 | 8 | public class FavoriteColorIndexer extends PersonIndexer { 9 | 10 | @Override 11 | public int hashCode() { 12 | return super.hashCode(); 13 | } 14 | 15 | @Override 16 | public boolean equals(final Object obj) { 17 | return super.equals(obj); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final Person person) { 22 | return Collections.singleton(person.getFavoriteColor()); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/util/model/person/FirstNameIndexer.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.util.model.person; 2 | 3 | import org.chronos.common.test.utils.model.person.Person; 4 | 5 | import java.util.Collections; 6 | import java.util.Set; 7 | 8 | public class FirstNameIndexer extends PersonIndexer { 9 | 10 | @Override 11 | public int hashCode() { 12 | return super.hashCode(); 13 | } 14 | 15 | @Override 16 | public boolean equals(final Object obj) { 17 | return super.equals(obj); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final Person person) { 22 | return Collections.singleton(person.getFirstName()); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/util/model/person/HobbiesIndexer.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.util.model.person; 2 | 3 | import org.chronos.common.test.utils.model.person.Person; 4 | 5 | import java.util.Collections; 6 | import java.util.Set; 7 | 8 | public class HobbiesIndexer extends PersonIndexer { 9 | 10 | @Override 11 | public int hashCode() { 12 | return super.hashCode(); 13 | } 14 | 15 | @Override 16 | public boolean equals(final Object obj) { 17 | return super.equals(obj); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final Person person) { 22 | return Collections.unmodifiableSet(person.getHobbies()); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/util/model/person/LastNameIndexer.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.util.model.person; 2 | 3 | import org.chronos.common.test.utils.model.person.Person; 4 | 5 | import java.util.Collections; 6 | import java.util.Set; 7 | 8 | public class LastNameIndexer extends PersonIndexer { 9 | 10 | @Override 11 | public int hashCode() { 12 | return super.hashCode(); 13 | } 14 | 15 | @Override 16 | public boolean equals(final Object obj) { 17 | return super.equals(obj); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final Person person) { 22 | return Collections.singleton(person.getLastName()); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/java/org/chronos/chronodb/test/cases/util/model/person/PetsIndexer.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.test.cases.util.model.person; 2 | 3 | import org.chronos.common.test.utils.model.person.Person; 4 | 5 | import java.util.Collections; 6 | import java.util.Set; 7 | 8 | public class PetsIndexer extends PersonIndexer { 9 | 10 | @Override 11 | public int hashCode() { 12 | return super.hashCode(); 13 | } 14 | 15 | @Override 16 | public boolean equals(final Object obj) { 17 | return super.equals(obj); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final Person person) { 22 | return Collections.unmodifiableSet(person.getPets()); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/backup_test1.cib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/org.chronos.chronodb.api/src/test/resources/backup_test1.cib -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/backup_test1_corrupted.cib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/org.chronos.chronodb.api/src/test/resources/backup_test1_corrupted.cib -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/chronoCacheConfigTest_correct.properties: -------------------------------------------------------------------------------- 1 | # general configuration 2 | org.chronos.chronodb.storage.backend = inmemory 3 | 4 | #caching 5 | org.chronos.chronodb.cache.enabled = true 6 | org.chronos.chronodb.cache.maxSize = 1000 -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/chronoCacheConfigTest_wrong.properties: -------------------------------------------------------------------------------- 1 | # general configuration 2 | org.chronos.chronodb.storage.backend = inmemory 3 | 4 | #caching 5 | org.chronos.chronodb.cache.enabled = true 6 | # Note: this config is wrong because the following line is missing: 7 | # org.chronos.chronodb.cache.maxSize = 1000 -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/chronos_backup_inc2.cib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/org.chronos.chronodb.api/src/test/resources/chronos_backup_inc2.cib -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/chronotest.properties: -------------------------------------------------------------------------------- 1 | # we disable the property here to test that reading properties from file indeed works 2 | org.chronos.chronodb.conflictresolver=OVERWRITE_WITH_SOURCE -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/fullChronoConfig.properties: -------------------------------------------------------------------------------- 1 | org.chronos.chronodb.storage.backend = inmemory 2 | # we disable the property here to test that reading properties from file indeed works 3 | org.chronos.chronodb.conflictresolver=OVERWRITE_WITH_SOURCE -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/migrationTestResources/ChronoDB_v0_5_7_BranchTest_ChunkDB.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/org.chronos.chronodb.api/src/test/resources/migrationTestResources/ChronoDB_v0_5_7_BranchTest_ChunkDB.zip -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/migrationTestResources/ChronoDB_v1_11_18_MigrationTest_Exodus.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/org.chronos.chronodb.api/src/test/resources/migrationTestResources/ChronoDB_v1_11_18_MigrationTest_Exodus.zip -------------------------------------------------------------------------------- /org.chronos.chronodb.api/src/test/resources/migrationTestResources/chronos_0_10_18.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/org.chronos.chronodb.api/src/test/resources/migrationTestResources/chronos_0_10_18.zip -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/ExodusChronoDBFeatures.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus 2 | 3 | import org.chronos.chronodb.api.ChronoDBFeatures 4 | 5 | object ExodusChronoDBFeatures: ChronoDBFeatures { 6 | 7 | override fun isPersistent(): Boolean { 8 | return true 9 | } 10 | 11 | override fun isRolloverSupported(): Boolean { 12 | return true 13 | } 14 | 15 | override fun isIncrementalBackupSupported(): Boolean { 16 | return true 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/builder/ExodusChronoDBFinalizableBuilder.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.builder 2 | 3 | import org.chronos.chronodb.api.builder.database.ChronoDBFinalizableBuilder 4 | 5 | interface ExodusChronoDBFinalizableBuilder : ChronoDBFinalizableBuilder { 6 | 7 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/layout/ChronoDBDirectoryLayout.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.layout 2 | 3 | object ChronoDBDirectoryLayout { 4 | 5 | // DIRECTORIES 6 | const val GLOBAL_DIRECTORY = "global" 7 | const val BRANCHES_DIRECTORY = "branches" 8 | const val BRANCH_DIRECTORY_PREFIX = "branch_" 9 | const val CHUNK_DIRECTORY_PREFIX = "chunk" 10 | const val CHUNK_DATA_DIRECTORY = "data" 11 | const val CHUNK_INDEX_DIRCTORY = "index" 12 | const val CHUNK_METADATA_DIRECTORY = "meta" 13 | const val MASTER_BRANCH_DIRECTORY = BRANCH_DIRECTORY_PREFIX + "master" 14 | 15 | const val CHUNK_DIRECTORY_REGEX = "$CHUNK_DIRECTORY_PREFIX[0-9]+" 16 | 17 | // FILES 18 | const val CHUNK_INFO_PROPERTIES = "chunkinfo.properties" 19 | const val CHUNK_LOCK_FILE = "chunk.lck" 20 | const val BRANCH_INFO_PROPERTIES = "branchinfo.properties" 21 | 22 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/manager/chunk/RolloverProcessInfo.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.manager.chunk 2 | 3 | import org.chronos.chronodb.exodus.kotlin.ext.requireNonNegative 4 | 5 | class RolloverProcessInfo( 6 | val oldHeadChunk: ChronoChunk, 7 | val newHeadChunk: ChronoChunk, 8 | val rolloverTimestamp: Long 9 | ) { 10 | 11 | init { 12 | requireNonNegative(this.rolloverTimestamp, "rolloverTimestamp") 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/ByteArrayLongSearchable.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | import jetbrains.exodus.ByteIterable 4 | import java.nio.ByteBuffer 5 | 6 | class ByteIterableLongSearchable : LongSearchable { 7 | 8 | private val bytes: ByteArray 9 | private val byteSize: Int 10 | private val buffer: ByteBuffer 11 | 12 | constructor(byteIterable: ByteIterable){ 13 | this.bytes = byteIterable.bytesUnsafe 14 | this.byteSize = byteIterable.length 15 | this.buffer = ByteBuffer.wrap(this.bytes) 16 | } 17 | 18 | override val size: Int 19 | get() = this.byteSize / java.lang.Long.BYTES 20 | 21 | 22 | override fun get(index: Int): Long { 23 | return this.buffer.getLong(index * java.lang.Long.BYTES) 24 | } 25 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/IndexEntry.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | import org.chronos.chronodb.internal.api.Period 4 | 5 | class IndexEntry( 6 | val branch: String, 7 | val chunkIndex: Long, 8 | val storeName: String, 9 | val primaryKey: String, 10 | val indexValue: V, 11 | val validityPeriods: List 12 | ){ 13 | 14 | override fun toString(): String { 15 | return "IndexEntry[${branch}#${chunkIndex}->${storeName}::${primaryKey}=${indexValue} for ${validityPeriods}]" 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/ListLongSearchable.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | class ListLongSearchable : LongSearchable { 4 | 5 | private val list: List 6 | 7 | constructor(list: List){ 8 | this.list = list 9 | } 10 | 11 | override val size: Int 12 | get() = this.list.size 13 | 14 | override fun get(index: Int): Long { 15 | return this.list[index] 16 | } 17 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/LongSearchable.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | interface LongSearchable { 4 | 5 | operator fun get(index: Int): Long 6 | 7 | val size: Int 8 | 9 | fun isEmpty(): Boolean { 10 | return this.size <= 0 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/ScanResult.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | import org.chronos.chronodb.api.Order 4 | 5 | data class ScanResult( 6 | val entries: List>, 7 | val orderedBy: OrderedBy? = null 8 | ) : List> by entries { 9 | 10 | val isOrdered 11 | get() = this.orderedBy != null 12 | } 13 | 14 | data class OrderedBy( 15 | val propertyName: String, 16 | val order: Order 17 | ) -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/ScanResultEntry.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | data class ScanResultEntry( 4 | val indexedValue: T, 5 | val primaryKey: String 6 | ) -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/ScanTimeMode.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | enum class ScanTimeMode { 4 | 5 | SCAN_FOR_PERIOD_MATCHES, 6 | SCAN_FOR_TERMINATED_PERIODS 7 | 8 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/StoreUtils.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | import jetbrains.exodus.ByteIterable 4 | 5 | object StoreUtils { 6 | 7 | fun isTimestampInRange(timestamp: Long, ranges: ByteIterable, scanTimeMode: ScanTimeMode): Boolean { 8 | return when (scanTimeMode) { 9 | ScanTimeMode.SCAN_FOR_PERIOD_MATCHES -> rangeBinarySearch(ByteIterableLongSearchable(ranges), timestamp) != null 10 | ScanTimeMode.SCAN_FOR_TERMINATED_PERIODS -> rangeBinarySearchForHighestTerminatedPeriod(ByteIterableLongSearchable(ranges), timestamp) != null 11 | } 12 | } 13 | 14 | } 15 | 16 | -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/secondaryindex/stores/TypeAliases.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.secondaryindex.stores 2 | 3 | import org.chronos.chronodb.internal.api.Period 4 | 5 | typealias RawIndexEntryConsumer = (storeName: String, primaryKey: String, indexedValue: V, validityPeriods: List)->Unit 6 | typealias IndexEntryConsumer = (IndexEntry)->Unit 7 | 8 | typealias IndexScanConsumer = (primaryKey: String, indexedValue: V) -> Unit -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/kotlin/org/chronos/chronodb/exodus/transaction/ExodusChunkTransaction.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.transaction 2 | 3 | import org.chronos.chronodb.internal.api.Period 4 | 5 | interface ExodusChunkTransaction : ExodusTransaction { 6 | 7 | val chunkValidPeriod: Period 8 | 9 | fun useChunkTx(consumer: (ExodusChunkTransaction) -> T): T { 10 | try { 11 | return consumer(this) 12 | } finally { 13 | if (this.isOpen) { 14 | this.rollback() 15 | } 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/main/resources/META-INF/services/org.chronos.chronodb.api.builder.database.spi.ChronoDBBackendProvider: -------------------------------------------------------------------------------- 1 | org.chronos.chronodb.exodus.provider.ExodusChronoDBBackendProvider -------------------------------------------------------------------------------- /org.chronos.chronodb.exodus/src/test/kotlin/org/chronos/chronodb/exodus/test/base/TestWithTempDir.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronodb.exodus.test.base 2 | 3 | import com.google.common.io.Files 4 | import org.apache.commons.io.FileUtils 5 | import org.junit.jupiter.api.AfterEach 6 | import org.junit.jupiter.api.BeforeEach 7 | import java.io.File 8 | import java.lang.IllegalStateException 9 | 10 | abstract class TestWithTempDir { 11 | 12 | private var dir: File? = null 13 | 14 | val testDir: File 15 | get() = this.dir ?: throw IllegalStateException("Test dir is not set up yet!") 16 | 17 | 18 | @BeforeEach 19 | fun setUpTestDir() { 20 | dir = Files.createTempDir() 21 | dir!!.deleteOnExit() 22 | } 23 | 24 | @AfterEach 25 | fun tearDownTestDir() { 26 | if (this.dir != null) { 27 | FileUtils.deleteDirectory(this.dir) 28 | } 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/builder/index/EdgeIndexBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.builder.index; 2 | 3 | import org.chronos.chronodb.internal.api.Period; 4 | 5 | /** 6 | * A step in the fluent graph index builder API. 7 | * 8 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 9 | */ 10 | public interface EdgeIndexBuilder { 11 | 12 | public FinalizableEdgeIndexBuilder withValidityPeriod(long startTimestamp, long endTimestamp); 13 | 14 | public default FinalizableEdgeIndexBuilder withValidityPeriod(Period period) { 15 | return this.withValidityPeriod(period.getLowerBound(), period.getUpperBound()); 16 | } 17 | 18 | public default FinalizableEdgeIndexBuilder acrossAllTimestamps(){ 19 | return this.withValidityPeriod(Period.eternal()); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/builder/index/FinalizableEdgeIndexBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.builder.index; 2 | 3 | import org.chronos.chronograph.api.index.ChronoGraphIndex; 4 | 5 | public interface FinalizableEdgeIndexBuilder { 6 | 7 | public FinalizableEdgeIndexBuilder assumeNoPriorValues(boolean assumeNoPriorValues); 8 | 9 | public ChronoGraphIndex build(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/builder/index/FinalizableVertexIndexBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.builder.index; 2 | 3 | import org.chronos.chronograph.api.index.ChronoGraphIndex; 4 | 5 | public interface FinalizableVertexIndexBuilder { 6 | 7 | public FinalizableVertexIndexBuilder assumeNoPriorValues(boolean assumeNoPriorValues); 8 | 9 | public ChronoGraphIndex build(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/builder/index/VertexIndexBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.builder.index; 2 | 3 | import org.chronos.chronodb.internal.api.Period; 4 | import org.chronos.chronograph.api.index.ChronoGraphIndex; 5 | 6 | /** 7 | * A step in the fluent graph index builder API. 8 | * 9 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 10 | */ 11 | public interface VertexIndexBuilder { 12 | 13 | public FinalizableVertexIndexBuilder withValidityPeriod(long startTimestamp, long endTimestamp); 14 | 15 | public default FinalizableVertexIndexBuilder withValidityPeriod(Period period) { 16 | return this.withValidityPeriod(period.getLowerBound(), period.getUpperBound()); 17 | } 18 | 19 | public default FinalizableVertexIndexBuilder acrossAllTimestamps(){ 20 | return this.withValidityPeriod(Period.eternal()); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/ChronoGraphCommitConflictException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class ChronoGraphCommitConflictException extends ChronoGraphException { 4 | 5 | public ChronoGraphCommitConflictException() { 6 | super(); 7 | } 8 | 9 | protected ChronoGraphCommitConflictException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoGraphCommitConflictException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoGraphCommitConflictException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoGraphCommitConflictException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/ChronoGraphConfigurationException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class ChronoGraphConfigurationException extends ChronoGraphException { 4 | 5 | public ChronoGraphConfigurationException() { 6 | super(); 7 | } 8 | 9 | protected ChronoGraphConfigurationException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoGraphConfigurationException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoGraphConfigurationException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoGraphConfigurationException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/ChronoGraphException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | import org.chronos.common.exceptions.ChronosException; 4 | 5 | public class ChronoGraphException extends ChronosException { 6 | 7 | public ChronoGraphException() { 8 | super(); 9 | } 10 | 11 | protected ChronoGraphException(final String message, final Throwable cause, final boolean enableSuppression, 12 | final boolean writableStackTrace) { 13 | super(message, cause, enableSuppression, writableStackTrace); 14 | } 15 | 16 | public ChronoGraphException(final String message, final Throwable cause) { 17 | super(message, cause); 18 | } 19 | 20 | public ChronoGraphException(final String message) { 21 | super(message); 22 | } 23 | 24 | public ChronoGraphException(final Throwable cause) { 25 | super(cause); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/ChronoGraphIndexingException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class ChronoGraphIndexingException extends ChronoGraphException { 4 | 5 | public ChronoGraphIndexingException() { 6 | super(); 7 | } 8 | 9 | protected ChronoGraphIndexingException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoGraphIndexingException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoGraphIndexingException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoGraphIndexingException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/ChronoGraphSchemaViolationException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class ChronoGraphSchemaViolationException extends ChronoGraphException { 4 | 5 | public ChronoGraphSchemaViolationException() { 6 | } 7 | 8 | protected ChronoGraphSchemaViolationException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 9 | super(message, cause, enableSuppression, writableStackTrace); 10 | } 11 | 12 | public ChronoGraphSchemaViolationException(final String message, final Throwable cause) { 13 | super(message, cause); 14 | } 15 | 16 | public ChronoGraphSchemaViolationException(final String message) { 17 | super(message); 18 | } 19 | 20 | public ChronoGraphSchemaViolationException(final Throwable cause) { 21 | super(cause); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/GraphInvariantViolationException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class GraphInvariantViolationException extends ChronoGraphException { 4 | 5 | public GraphInvariantViolationException() { 6 | } 7 | 8 | protected GraphInvariantViolationException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 9 | super(message, cause, enableSuppression, writableStackTrace); 10 | } 11 | 12 | public GraphInvariantViolationException(final String message, final Throwable cause) { 13 | super(message, cause); 14 | } 15 | 16 | public GraphInvariantViolationException(final String message) { 17 | super(message); 18 | } 19 | 20 | public GraphInvariantViolationException(final Throwable cause) { 21 | super(cause); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/GraphTriggerClassNotFoundException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class GraphTriggerClassNotFoundException extends GraphTriggerException { 4 | 5 | public GraphTriggerClassNotFoundException() { 6 | } 7 | 8 | protected GraphTriggerClassNotFoundException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 9 | super(message, cause, enableSuppression, writableStackTrace); 10 | } 11 | 12 | public GraphTriggerClassNotFoundException(final String message, final Throwable cause) { 13 | super(message, cause); 14 | } 15 | 16 | public GraphTriggerClassNotFoundException(final String message) { 17 | super(message); 18 | } 19 | 20 | public GraphTriggerClassNotFoundException(final Throwable cause) { 21 | super(cause); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/GraphTriggerException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class GraphTriggerException extends ChronoGraphException { 4 | 5 | public GraphTriggerException() { 6 | } 7 | 8 | protected GraphTriggerException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 9 | super(message, cause, enableSuppression, writableStackTrace); 10 | } 11 | 12 | public GraphTriggerException(final String message, final Throwable cause) { 13 | super(message, cause); 14 | } 15 | 16 | public GraphTriggerException(final String message) { 17 | super(message); 18 | } 19 | 20 | public GraphTriggerException(final Throwable cause) { 21 | super(cause); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/GraphTriggerScriptException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class GraphTriggerScriptException extends GraphTriggerException { 4 | 5 | public GraphTriggerScriptException() { 6 | } 7 | 8 | protected GraphTriggerScriptException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 9 | super(message, cause, enableSuppression, writableStackTrace); 10 | } 11 | 12 | public GraphTriggerScriptException(final String message, final Throwable cause) { 13 | super(message, cause); 14 | } 15 | 16 | public GraphTriggerScriptException(final String message) { 17 | super(message); 18 | } 19 | 20 | public GraphTriggerScriptException(final Throwable cause) { 21 | super(cause); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/InvalidChronoIdentifierException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class InvalidChronoIdentifierException extends ChronoGraphException { 4 | 5 | public InvalidChronoIdentifierException() { 6 | super(); 7 | } 8 | 9 | protected InvalidChronoIdentifierException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public InvalidChronoIdentifierException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public InvalidChronoIdentifierException(final String message) { 19 | super(message); 20 | } 21 | 22 | public InvalidChronoIdentifierException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/PropertyIsAlreadyIndexedException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class PropertyIsAlreadyIndexedException extends ChronoGraphIndexingException { 4 | 5 | public PropertyIsAlreadyIndexedException() { 6 | super(); 7 | } 8 | 9 | protected PropertyIsAlreadyIndexedException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public PropertyIsAlreadyIndexedException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public PropertyIsAlreadyIndexedException(final String message) { 19 | super(message); 20 | } 21 | 22 | public PropertyIsAlreadyIndexedException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/exceptions/TriggerAlreadyExistsException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.exceptions; 2 | 3 | public class TriggerAlreadyExistsException extends ChronoGraphException { 4 | 5 | public TriggerAlreadyExistsException() { 6 | } 7 | 8 | protected TriggerAlreadyExistsException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 9 | super(message, cause, enableSuppression, writableStackTrace); 10 | } 11 | 12 | public TriggerAlreadyExistsException(final String message, final Throwable cause) { 13 | super(message, cause); 14 | } 15 | 16 | public TriggerAlreadyExistsException(final String message) { 17 | super(message); 18 | } 19 | 20 | public TriggerAlreadyExistsException(final Throwable cause) { 21 | super(cause); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/ChronoGraphIteratorBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators; 2 | 3 | import org.chronos.chronograph.api.structure.ChronoGraph; 4 | 5 | public interface ChronoGraphIteratorBuilder { 6 | 7 | public ChronoGraph getGraph(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/ChronoGraphIterators.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators; 2 | 3 | import org.chronos.chronograph.api.structure.ChronoGraph; 4 | import org.chronos.chronograph.internal.impl.iterators.builder.ChronoGraphRootIteratorBuilderImpl; 5 | 6 | import static com.google.common.base.Preconditions.*; 7 | 8 | public interface ChronoGraphIterators { 9 | 10 | public static ChronoGraphRootIteratorBuilder createIteratorOn(ChronoGraph graph) { 11 | checkNotNull(graph, "Precondition violation - argument 'graph' must not be NULL!"); 12 | checkArgument(graph.isClosed() == false, "Precondition violation - argument 'graph' must not be closed!"); 13 | return new ChronoGraphRootIteratorBuilderImpl(graph); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/callbacks/BranchChangeCallback.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.callbacks; 2 | 3 | @FunctionalInterface 4 | public interface BranchChangeCallback { 5 | 6 | public static final BranchChangeCallback IGNORE = (previousBranch, nextBranch) -> { 7 | }; 8 | 9 | public void handleBranchChanged(String previousBranch, String nextBranch); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/callbacks/TimestampChangeCallback.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.callbacks; 2 | 3 | @FunctionalInterface 4 | public interface TimestampChangeCallback { 5 | 6 | public static final TimestampChangeCallback IGNORE = (previousTimestamp, newTimestamp) -> { 7 | }; 8 | 9 | 10 | public void handleTimestampChange(Long previousTimestamp, Long newTimestamp); 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllChangedEdgeIdsAndTheirPreviousNeighborhoodState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | import java.util.Set; 4 | 5 | public interface AllChangedEdgeIdsAndTheirPreviousNeighborhoodState extends GraphIteratorState { 6 | 7 | public String getCurrentEdgeId(); 8 | 9 | public boolean isCurrentEdgeRemoved(); 10 | 11 | public Set getNeighborhoodVertexIds(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllChangedEdgeIdsState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | public interface AllChangedEdgeIdsState extends GraphIteratorState { 4 | 5 | public String getCurrentEdgeId(); 6 | 7 | public boolean isCurrentEdgeRemoved(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllChangedElementIdsAndTheirNeighborhoodState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | import java.util.Set; 4 | 5 | public interface AllChangedElementIdsAndTheirNeighborhoodState extends AllChangedElementIdsState { 6 | 7 | public Set getNeighborhoodVertexIds(); 8 | 9 | public Set getNeighborhoodEdgeIds(); 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllChangedElementIdsState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Edge; 4 | import org.apache.tinkerpop.gremlin.structure.Element; 5 | import org.apache.tinkerpop.gremlin.structure.Vertex; 6 | 7 | public interface AllChangedElementIdsState extends GraphIteratorState { 8 | 9 | public String getCurrentElementId(); 10 | 11 | public Class getCurrentElementClass(); 12 | 13 | public boolean isCurrentElementRemoved(); 14 | 15 | public default boolean isCurrentElementAVertex() { 16 | return Vertex.class.isAssignableFrom(this.getCurrentElementClass()); 17 | } 18 | 19 | public default boolean isCurrentElementAnEdge() { 20 | return Edge.class.isAssignableFrom(this.getCurrentElementClass()); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllChangedVertexIdsAndTheirPreviousNeighborhoodState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | import java.util.Set; 4 | 5 | public interface AllChangedVertexIdsAndTheirPreviousNeighborhoodState extends GraphIteratorState { 6 | 7 | public String getCurrentVertexId(); 8 | 9 | public boolean isCurrentVertexRemoved(); 10 | 11 | public Set getNeighborhoodEdgeIds(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllChangedVertexIdsState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | public interface AllChangedVertexIdsState extends GraphIteratorState { 4 | 5 | public String getCurrentVertexId(); 6 | 7 | public boolean isCurrentVertexRemoved(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllEdgesState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Edge; 4 | 5 | public interface AllEdgesState extends GraphIteratorState { 6 | 7 | public Edge getCurrentEdge(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllElementsState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Element; 4 | 5 | public interface AllElementsState extends GraphIteratorState { 6 | 7 | public Element getCurrentElement(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/iterators/states/AllVerticesState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.iterators.states; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Vertex; 4 | 5 | public interface AllVerticesState extends GraphIteratorState { 6 | 7 | public Vertex getCurrentVertex(); 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/jmx/ChronoGraphCacheStatisticsMBean.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.jmx; 2 | 3 | public interface ChronoGraphCacheStatisticsMBean { 4 | 5 | public int getCacheSize(); 6 | 7 | public long getHitCount(); 8 | 9 | public long getMissCount(); 10 | 11 | public long getRequestCount(); 12 | 13 | public double getHitRate(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/jmx/ChronoGraphTransactionStatisticsMBean.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.jmx; 2 | 3 | public interface ChronoGraphTransactionStatisticsMBean { 4 | 5 | public long getNumberOfVertexRecordRefetches(); 6 | 7 | public void incrementNumberOfVertexRecordRefetches(); 8 | 9 | public void resetNumberOfVertexRecordRefetches(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/structure/ChronoEdge.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.structure; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Edge; 4 | 5 | /** 6 | * The {@link ChronoGraph}-specific representation of the general-purpose TinkerPop {@link Edge} interface. 7 | * 8 | *

9 | * This interface defines additional methods for all graph elements, mostly intended for internal use only. 10 | * 11 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 12 | */ 13 | public interface ChronoEdge extends Edge, ChronoElement { 14 | 15 | } -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/structure/ChronoVertex.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.structure; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Vertex; 4 | 5 | /** 6 | * The {@link ChronoGraph}-specific representation of the general-purpose TinkerPop {@link Vertex} interface. 7 | * 8 | *

9 | * This interface defines additional methods for all graph elements, mostly intended for internal use only. 10 | * 11 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 12 | */ 13 | public interface ChronoVertex extends Vertex, ChronoElement { 14 | 15 | 16 | } -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/structure/record/IEdgeRecord.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.structure.record; 2 | 3 | public interface IEdgeRecord extends IElementRecord { 4 | 5 | String getOutVertexId(); 6 | 7 | String getInVertexId(); 8 | 9 | public static IEdgeRecordBuilder builder(){ 10 | return new IEdgeRecordBuilder(); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/structure/record/IEdgeTargetRecord.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.structure.record; 2 | 3 | public interface IEdgeTargetRecord extends Record { 4 | 5 | public String getEdgeId(); 6 | 7 | public String getOtherEndVertexId(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/structure/record/IElementRecord.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.structure.record; 2 | 3 | import java.util.Set; 4 | 5 | public interface IElementRecord extends Record { 6 | 7 | public String getId(); 8 | 9 | public String getLabel(); 10 | 11 | public Set getProperties(); 12 | 13 | public IPropertyRecord getProperty(String propertyKey); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/structure/record/IPropertyRecord.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.structure.record; 2 | 3 | public interface IPropertyRecord extends Record { 4 | 5 | public String getKey(); 6 | 7 | public Object getValue(); 8 | 9 | public Object getSerializationSafeValue(); 10 | } 11 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/structure/record/IVertexPropertyRecord.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.structure.record; 2 | 3 | import java.util.Map; 4 | 5 | public interface IVertexPropertyRecord extends IPropertyRecord { 6 | 7 | public Map getProperties(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/structure/record/Record.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.structure.record; 2 | 3 | public interface Record { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/AllEdgesIterationHandler.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction; 2 | 3 | public interface AllEdgesIterationHandler { 4 | 5 | public void onAllEdgesIteration(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/AllVerticesIterationHandler.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction; 2 | 3 | public interface AllVerticesIterationHandler { 4 | 5 | public void onAllVerticesIteration(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/conflict/PropertyConflict.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.conflict; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Element; 4 | import org.apache.tinkerpop.gremlin.structure.Property; 5 | 6 | public interface PropertyConflict { 7 | 8 | public String getPropertyKey(); 9 | 10 | public Element getTransactionElement(); 11 | 12 | public Property getTransactionProperty(); 13 | 14 | public Element getStoreElement(); 15 | 16 | public Property getStoreProperty(); 17 | 18 | public Element getAncestorElement(); 19 | 20 | public Property getAncestorProperty(); 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/AncestorState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface AncestorState extends State { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/CancelCommitException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public class CancelCommitException extends RuntimeException { 4 | 5 | public CancelCommitException() { 6 | } 7 | 8 | public CancelCommitException(final String message) { 9 | super(message); 10 | } 11 | 12 | public CancelCommitException(final String message, final Throwable cause) { 13 | super(message, cause); 14 | } 15 | 16 | public CancelCommitException(final Throwable cause) { 17 | super(cause); 18 | } 19 | 20 | protected CancelCommitException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 21 | super(message, cause, enableSuppression, writableStackTrace); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/ChronoGraphPostCommitTrigger.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface ChronoGraphPostCommitTrigger extends ChronoGraphTrigger { 4 | 5 | public void onPostCommit(PostCommitTriggerContext context); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/ChronoGraphPostPersistTrigger.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface ChronoGraphPostPersistTrigger extends ChronoGraphTrigger { 4 | 5 | public void onPostPersist(PostPersistTriggerContext context); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/ChronoGraphPreCommitTrigger.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface ChronoGraphPreCommitTrigger extends ChronoGraphTrigger { 4 | 5 | public void onPreCommit(PreCommitTriggerContext context) throws CancelCommitException; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/ChronoGraphPrePersistTrigger.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface ChronoGraphPrePersistTrigger extends ChronoGraphTrigger { 4 | 5 | public void onPrePersist(PrePersistTriggerContext context) throws CancelCommitException; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/CurrentState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | import org.chronos.chronograph.api.structure.ChronoEdge; 4 | import org.chronos.chronograph.api.structure.ChronoVertex; 5 | 6 | import java.util.Set; 7 | 8 | public interface CurrentState extends State { 9 | 10 | public Set getModifiedVertices(); 11 | 12 | public Set getModifiedEdges(); 13 | 14 | public Set getModifiedGraphVariables(); 15 | 16 | public Set getModifiedGraphVariables(String keyspace); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/GraphTriggerMetadata.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | import org.chronos.chronograph.api.exceptions.GraphTriggerException; 4 | 5 | public interface GraphTriggerMetadata { 6 | 7 | public String getTriggerName(); 8 | 9 | public String getTriggerClassName(); 10 | 11 | public int getPriority(); 12 | 13 | public boolean isPreCommitTrigger(); 14 | 15 | public boolean isPrePersistTrigger(); 16 | 17 | public boolean isPostPersistTrigger(); 18 | 19 | public boolean isPostCommitTrigger(); 20 | 21 | public String getUserScriptContent(); 22 | 23 | public GraphTriggerException getInstantiationException(); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/PostCommitTriggerContext.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface PostCommitTriggerContext extends PostTriggerContext { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/PostPersistTriggerContext.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface PostPersistTriggerContext extends PostTriggerContext { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/PostTriggerContext.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface PostTriggerContext extends TriggerContext { 4 | 5 | public long getCommitTimestamp(); 6 | 7 | public PreCommitStoreState getPreCommitStoreState(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/PreCommitStoreState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface PreCommitStoreState extends State { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/PreCommitTriggerContext.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface PreCommitTriggerContext extends PreTriggerContext { 4 | } 5 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/PrePersistTriggerContext.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface PrePersistTriggerContext extends PreTriggerContext { 4 | } 5 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/PreTriggerContext.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface PreTriggerContext extends TriggerContext { 4 | } 5 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/State.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | import org.chronos.chronograph.api.branch.GraphBranch; 4 | import org.chronos.chronograph.api.structure.ChronoGraph; 5 | 6 | public interface State { 7 | 8 | public ChronoGraph getGraph(); 9 | 10 | public long getTimestamp(); 11 | 12 | public GraphBranch getBranch(); 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/StoreState.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | public interface StoreState extends State { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/api/transaction/trigger/TriggerContext.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.api.transaction.trigger; 2 | 3 | import org.chronos.chronograph.api.branch.GraphBranch; 4 | 5 | public interface TriggerContext extends AutoCloseable { 6 | 7 | public CurrentState getCurrentState(); 8 | 9 | public AncestorState getAncestorState(); 10 | 11 | public StoreState getStoreState(); 12 | 13 | public String getTriggerName(); 14 | 15 | public GraphBranch getBranch(); 16 | 17 | public Object getCommitMetadata(); 18 | 19 | @Override 20 | void close(); 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/api/index/IChronoGraphEdgeIndex.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.api.index; 2 | 3 | /** 4 | * A common interface for all edge indices. 5 | * 6 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 7 | */ 8 | public interface IChronoGraphEdgeIndex extends ChronoGraphIndexInternal { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/api/index/IChronoGraphVertexIndex.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.api.index; 2 | 3 | /** 4 | * A common interface for all vertex indices. 5 | * 6 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 7 | */ 8 | public interface IChronoGraphVertexIndex extends ChronoGraphIndexInternal { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/builder/graph/AbstractChronoGraphBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.builder.graph; 2 | 3 | import org.chronos.common.builder.AbstractChronoBuilder; 4 | import org.chronos.common.builder.ChronoBuilder; 5 | 6 | public abstract class AbstractChronoGraphBuilder> extends AbstractChronoBuilder 7 | implements ChronoBuilder { 8 | 9 | } -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/builder/graph/ChronoGraphDefaultProperties.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.builder.graph; 2 | 3 | import org.chronos.chronodb.internal.api.ChronoDBConfiguration; 4 | import org.chronos.common.builder.ChronoBuilder; 5 | 6 | import static com.google.common.base.Preconditions.*; 7 | 8 | public class ChronoGraphDefaultProperties { 9 | 10 | public static void applyTo(ChronoBuilder builder){ 11 | checkNotNull(builder, "Precondition violation - argument 'builder' must not be NULL!"); 12 | // in ChronoGraph, we can ALWAYS ensure immutability of ChronoDB cache values. The reason for this is 13 | // that ChronoGraph only passes records (e.g. VertexRecord) to the underlying ChronoDB, and records 14 | // are always immutable. 15 | builder.withProperty(ChronoDBConfiguration.ASSUME_CACHE_VALUES_ARE_IMMUTABLE, "true"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/dumpformat/converter/EdgeRecordConverter.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.dumpformat.converter; 2 | 3 | import org.chronos.chronodb.api.dump.ChronoConverter; 4 | import org.chronos.chronograph.api.structure.record.IEdgeRecord; 5 | import org.chronos.chronograph.internal.impl.dumpformat.EdgeDump; 6 | 7 | public class EdgeRecordConverter implements ChronoConverter { 8 | 9 | @Override 10 | public EdgeDump writeToOutput(final IEdgeRecord record) { 11 | if (record == null) { 12 | return null; 13 | } 14 | return new EdgeDump(record); 15 | } 16 | 17 | @Override 18 | public IEdgeRecord readFromInput(final EdgeDump dump) { 19 | if (dump == null) { 20 | return null; 21 | } 22 | return dump.toRecord(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/dumpformat/converter/VertexRecordConverter.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.dumpformat.converter; 2 | 3 | import org.chronos.chronodb.api.dump.ChronoConverter; 4 | import org.chronos.chronograph.api.structure.record.IVertexRecord; 5 | import org.chronos.chronograph.internal.impl.dumpformat.VertexDump; 6 | 7 | public class VertexRecordConverter implements ChronoConverter { 8 | 9 | @Override 10 | public VertexDump writeToOutput(final IVertexRecord record) { 11 | if (record == null) { 12 | return null; 13 | } 14 | return new VertexDump(record); 15 | } 16 | 17 | @Override 18 | public IVertexRecord readFromInput(final VertexDump dump) { 19 | if (dump == null) { 20 | return null; 21 | } 22 | return dump.toRecord(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/dumpformat/vertexproperty/VertexPropertyDump.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.dumpformat.vertexproperty; 2 | 3 | import java.util.Map; 4 | 5 | import org.chronos.chronograph.internal.impl.dumpformat.property.AbstractPropertyDump; 6 | 7 | public interface VertexPropertyDump { 8 | 9 | public String getKey(); 10 | 11 | public Object getValue(); 12 | 13 | public Map getProperties(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/groovy/GroovyCompilationCache.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.groovy; 2 | 3 | import groovy.lang.Script; 4 | 5 | public interface GroovyCompilationCache { 6 | 7 | public void put(String scriptContent, Class compiledScript); 8 | 9 | public Class get(String scriptContent); 10 | 11 | public void clear(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/index/EdgeRecordDoubleIndexer2.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.index; 2 | 3 | import java.util.Set; 4 | 5 | import org.chronos.chronodb.api.indexing.DoubleIndexer; 6 | import org.chronos.chronograph.api.structure.record.IPropertyRecord; 7 | import org.chronos.common.annotation.PersistentClass; 8 | 9 | @PersistentClass("kryo") 10 | public class EdgeRecordDoubleIndexer2 extends EdgeRecordPropertyIndexer2 implements DoubleIndexer { 11 | 12 | protected EdgeRecordDoubleIndexer2() { 13 | // default constructor for serialization 14 | } 15 | 16 | public EdgeRecordDoubleIndexer2(final String propertyName) { 17 | super(propertyName); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final IPropertyRecord record) { 22 | return GraphIndexingUtils.getDoubleIndexValues(record); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/index/EdgeRecordLongIndexer2.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.index; 2 | 3 | import java.util.Set; 4 | 5 | import org.chronos.chronodb.api.indexing.LongIndexer; 6 | import org.chronos.chronograph.api.structure.record.IPropertyRecord; 7 | import org.chronos.common.annotation.PersistentClass; 8 | 9 | @PersistentClass("kryo") 10 | public class EdgeRecordLongIndexer2 extends EdgeRecordPropertyIndexer2 implements LongIndexer { 11 | 12 | protected EdgeRecordLongIndexer2() { 13 | // default constructor for serialization 14 | } 15 | 16 | public EdgeRecordLongIndexer2(final String propertyName) { 17 | super(propertyName); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final IPropertyRecord record) { 22 | return GraphIndexingUtils.getLongIndexValues(record); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/index/EdgeRecordStringIndexer2.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.index; 2 | 3 | import java.util.Set; 4 | 5 | import org.chronos.chronodb.api.indexing.StringIndexer; 6 | import org.chronos.chronograph.api.structure.record.IPropertyRecord; 7 | 8 | public class EdgeRecordStringIndexer2 extends EdgeRecordPropertyIndexer2 implements StringIndexer { 9 | 10 | protected EdgeRecordStringIndexer2() { 11 | // default constructor for serialization 12 | } 13 | 14 | protected EdgeRecordStringIndexer2(final String propertyName) { 15 | super(propertyName); 16 | } 17 | 18 | @Override 19 | protected Set getIndexValuesInternal(final IPropertyRecord record) { 20 | return GraphIndexingUtils.getStringIndexValues(record); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/index/GraphPropertyIndexer.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.index; 2 | 3 | import org.chronos.chronodb.api.indexing.Indexer; 4 | 5 | public interface GraphPropertyIndexer extends Indexer { 6 | 7 | public String getGraphElementPropertyName(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/index/IndexType.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.index; 2 | 3 | /** 4 | * An enumeration over index types. 5 | * 6 | *

7 | * This enumeration is used in the construction of a graph index, indicating which values to index. 8 | * 9 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 10 | * 11 | */ 12 | public enum IndexType { 13 | 14 | /** Type for indices that store {@link String} values. */ 15 | STRING, 16 | /** Type for indices that store {@link Long} values. */ 17 | LONG, 18 | /** Type for indices that store {@link Double} values. */ 19 | DOUBLE; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/index/VertexRecordDoubleIndexer2.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.index; 2 | 3 | import java.util.Set; 4 | 5 | import org.chronos.chronodb.api.indexing.DoubleIndexer; 6 | import org.chronos.chronograph.api.structure.record.IPropertyRecord; 7 | import org.chronos.common.annotation.PersistentClass; 8 | 9 | @PersistentClass("kryo") 10 | public class VertexRecordDoubleIndexer2 extends VertexRecordPropertyIndexer2 implements DoubleIndexer { 11 | 12 | protected VertexRecordDoubleIndexer2() { 13 | // default constructor for serialization 14 | } 15 | 16 | public VertexRecordDoubleIndexer2(final String propertyName) { 17 | super(propertyName); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final IPropertyRecord record) { 22 | return GraphIndexingUtils.getDoubleIndexValues(record); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/index/VertexRecordLongIndexer2.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.index; 2 | 3 | import java.util.Set; 4 | 5 | import org.chronos.chronodb.api.indexing.LongIndexer; 6 | import org.chronos.chronograph.api.structure.record.IPropertyRecord; 7 | import org.chronos.common.annotation.PersistentClass; 8 | 9 | @PersistentClass("kryo") 10 | public class VertexRecordLongIndexer2 extends VertexRecordPropertyIndexer2 implements LongIndexer { 11 | 12 | protected VertexRecordLongIndexer2() { 13 | // default constructor for serialization 14 | } 15 | 16 | public VertexRecordLongIndexer2(final String propertyName) { 17 | super(propertyName); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final IPropertyRecord record) { 22 | return GraphIndexingUtils.getLongIndexValues(record); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/index/VertexRecordStringIndexer2.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.index; 2 | 3 | import java.util.Set; 4 | 5 | import org.chronos.chronodb.api.indexing.StringIndexer; 6 | import org.chronos.chronograph.api.structure.record.IPropertyRecord; 7 | import org.chronos.common.annotation.PersistentClass; 8 | 9 | @PersistentClass("kryo") 10 | public class VertexRecordStringIndexer2 extends VertexRecordPropertyIndexer2 implements StringIndexer { 11 | 12 | protected VertexRecordStringIndexer2() { 13 | // default constructor for serialization 14 | } 15 | 16 | public VertexRecordStringIndexer2(final String propertyName) { 17 | super(propertyName); 18 | } 19 | 20 | @Override 21 | protected Set getIndexValuesInternal(final IPropertyRecord record) { 22 | Set values = GraphIndexingUtils.getStringIndexValues(record); 23 | return values; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/iterators/builder/states/AllEdgesStateImpl.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.iterators.builder.states; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Edge; 4 | import org.chronos.chronograph.api.iterators.states.AllEdgesState; 5 | import org.chronos.chronograph.api.structure.ChronoGraph; 6 | 7 | import static com.google.common.base.Preconditions.*; 8 | 9 | public class AllEdgesStateImpl extends GraphIteratorStateImpl implements AllEdgesState { 10 | 11 | private final Edge edge; 12 | 13 | public AllEdgesStateImpl(final ChronoGraph txGraph, Edge edge) { 14 | super(txGraph); 15 | checkNotNull(edge, "Precondition violation - argument 'edge' must not be NULL!"); 16 | this.edge = edge; 17 | } 18 | 19 | @Override 20 | public Edge getCurrentEdge() { 21 | return this.edge; 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/iterators/builder/states/AllVerticesStateImpl.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.iterators.builder.states; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Vertex; 4 | import org.chronos.chronograph.api.iterators.states.AllVerticesState; 5 | import org.chronos.chronograph.api.structure.ChronoGraph; 6 | 7 | import static com.google.common.base.Preconditions.*; 8 | 9 | public class AllVerticesStateImpl extends GraphIteratorStateImpl implements AllVerticesState { 10 | 11 | private final Vertex vertex; 12 | 13 | public AllVerticesStateImpl(final ChronoGraph txGraph, Vertex vertex) { 14 | super(txGraph); 15 | checkNotNull(vertex, "Precondition violation - argument 'vertex' must not be NULL!"); 16 | this.vertex = vertex; 17 | } 18 | 19 | @Override 20 | public Vertex getCurrentVertex() { 21 | return this.vertex; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/optimizer/step/Prefetching.kt: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.optimizer.step 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Element 4 | 5 | interface Prefetching { 6 | 7 | fun registerFutureElementForPrefetching(element: Element) 8 | 9 | } -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/structure/graph/features/AbstractChronoGraphFeature.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.structure.graph.features; 2 | 3 | import static com.google.common.base.Preconditions.*; 4 | 5 | import org.chronos.chronograph.internal.api.structure.ChronoGraphInternal; 6 | 7 | abstract class AbstractChronoGraphFeature { 8 | 9 | private final ChronoGraphInternal graph; 10 | 11 | protected AbstractChronoGraphFeature(final ChronoGraphInternal graph) { 12 | checkNotNull(graph, "Precondition violation - argument 'graph' must not be NULL!"); 13 | this.graph = graph; 14 | } 15 | 16 | protected ChronoGraphInternal getGraph() { 17 | return this.graph; 18 | } 19 | } -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/transaction/ElementLoadMode.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.transaction; 2 | 3 | public enum ElementLoadMode { 4 | 5 | EAGER, LAZY; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/transaction/trigger/ChronoGraphTriggerManagerInternal.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.transaction.trigger; 2 | 3 | import org.apache.commons.lang3.tuple.Pair; 4 | import org.chronos.chronograph.api.transaction.trigger.*; 5 | 6 | import java.util.List; 7 | 8 | public interface ChronoGraphTriggerManagerInternal extends ChronoGraphTriggerManager { 9 | 10 | public List> getAllTriggers(); 11 | 12 | public List> getPreCommitTriggers(); 13 | 14 | public List> getPrePersistTriggers(); 15 | 16 | public List> getPostPersistTriggers(); 17 | 18 | public List> getPostCommitTriggers(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/util/ChronoGraphLoggingUtil.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.util; 2 | 3 | import org.chronos.chronograph.api.transaction.ChronoGraphTransaction; 4 | 5 | public class ChronoGraphLoggingUtil { 6 | 7 | public static String createLogHeader(ChronoGraphTransaction tx) { 8 | return "[GRAPH MODIFICATION] :: Coords [" + tx.getBranchName() + "@" + tx.getTimestamp() + "] TxID " + tx.getTransactionId() + " Time " + System.currentTimeMillis() + " :: "; 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/java/org/chronos/chronograph/internal/impl/util/ChronoId.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.internal.impl.util; 2 | 3 | import java.util.UUID; 4 | 5 | public class ChronoId { 6 | 7 | public static String random() { 8 | return UUID.randomUUID().toString(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/main/resources/ToDoList.txt: -------------------------------------------------------------------------------- 1 | Functional Requirements 2 | ======================= 3 | 4 | [ ] Allow creation of indices on vertices and edges. 5 | [ ] Create ChronoGraphStepStragegy and ChronoGraphStep (see TitanGraphStepStrategy and TitanGraphStep) 6 | [ ] Register ChronoGraphStepStrategy at the global cache (see StandardTitanGraph static initializer) 7 | [ ] Have a look at GraphComputer implementations (Titan, OrientDB, TinkerGraph) and implement one for ChronoGraph (OLAP) 8 | 9 | 10 | Performance Improvements 11 | ======================== 12 | 13 | [ ] Have a look at Titan's optimization strategies: AdjacentVertexFilterOptimizerStrategy, TitanLocalQueryOptimizerStrategy 14 | [ ] Have a look at the optimization strategies in OrientDB and TinkerGraph (if any...) 15 | [ ] Think about custom optimization strategies 16 | [ ] Implement a graph element cache based on WeakHashMap> (or LRU) -------------------------------------------------------------------------------- /org.chronos.chronograph/src/test/java/org/chronos/chronograph/test/base/ChronoGraphUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.test.base; 2 | 3 | import org.chronos.common.test.ChronosUnitTest; 4 | 5 | public abstract class ChronoGraphUnitTest extends ChronosUnitTest { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/test/java/org/chronos/chronograph/test/base/FailOnAllEdgesQuery.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.test.base; 2 | 3 | import java.lang.annotation.*; 4 | 5 | @Documented 6 | @Target(ElementType.METHOD) 7 | @Retention(RetentionPolicy.RUNTIME) 8 | public @interface FailOnAllEdgesQuery { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/test/java/org/chronos/chronograph/test/base/FailOnAllVerticesQuery.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.test.base; 2 | 3 | import java.lang.annotation.*; 4 | 5 | @Documented 6 | @Target(ElementType.METHOD) 7 | @Retention(RetentionPolicy.RUNTIME) 8 | public @interface FailOnAllVerticesQuery { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/test/java/org/chronos/chronograph/test/cases/builder/ChronoGraphCreationTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.test.cases.builder; 2 | 3 | import org.chronos.chronograph.api.structure.ChronoGraph; 4 | import org.chronos.chronograph.test.base.AllChronoGraphBackendsTest; 5 | import org.chronos.common.test.junit.categories.IntegrationTest; 6 | import org.junit.Test; 7 | import org.junit.experimental.categories.Category; 8 | 9 | import static org.junit.Assert.*; 10 | 11 | @Category(IntegrationTest.class) 12 | public class ChronoGraphCreationTest extends AllChronoGraphBackendsTest { 13 | 14 | @Test 15 | public void graphCreationWorks() { 16 | ChronoGraph graph = this.getGraph(); 17 | assertNotNull("Failed to instantiate ChronoGraph on Backend '" + this.getChronoBackendName() + "'!", graph); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/test/java/org/chronos/chronograph/test/cases/query/ChronoCompareTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.test.cases.query; 2 | 3 | import org.chronos.chronograph.internal.impl.query.ChronoStringCompare; 4 | import org.junit.Test; 5 | 6 | import static org.hamcrest.Matchers.*; 7 | import static org.junit.Assert.*; 8 | 9 | public class ChronoCompareTest { 10 | 11 | @Test 12 | public void testChronoCompareNegation(){ 13 | for(ChronoStringCompare compare : ChronoStringCompare.values()){ 14 | assertThat(compare.negate().negate(), is(compare)); 15 | } 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /org.chronos.chronograph/src/test/java/org/chronos/chronograph/test/util/FailOnAllEdgesIterationHandler.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.test.util; 2 | 3 | import org.chronos.chronograph.api.transaction.AllEdgesIterationHandler; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | public class FailOnAllEdgesIterationHandler implements AllEdgesIterationHandler { 8 | 9 | @Override 10 | public void onAllEdgesIteration() { 11 | fail("Required iteration over all Edges which is not supposed to happen in this test!"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/test/java/org/chronos/chronograph/test/util/FailOnAllVerticesIterationHandler.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronograph.test.util; 2 | 3 | import org.chronos.chronograph.api.transaction.AllVerticesIterationHandler; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | public class FailOnAllVerticesIterationHandler implements AllVerticesIterationHandler { 8 | 9 | @Override 10 | public void onAllVerticesIteration() { 11 | fail("Required iteration over all Vertices which is not supposed to happen in this test!"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronograph/src/test/resources/org/chronos/chronograph/dump/IndexingGraphDump.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/org.chronos.chronograph/src/test/resources/org/chronos/chronograph/dump/IndexingGraphDump.zip -------------------------------------------------------------------------------- /org.chronos.chronosphere/changelog.md: -------------------------------------------------------------------------------- 1 | # ChronoSphere Changelog 2 | 3 | ## Current Version: 4 | - Changed persistence format for improved performance 5 | - **WARNING**: This is a breaking change and incompatible with previous versions! 6 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/MetaModelEvolutionController.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api; 2 | 3 | import org.chronos.chronosphere.api.exceptions.MetaModelEvolutionCanceledException; 4 | 5 | public interface MetaModelEvolutionController { 6 | 7 | public void migrate(MetaModelEvolutionContext context) throws MetaModelEvolutionCanceledException; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/builder/repository/ChronoSphereBaseBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.builder.repository; 2 | 3 | import java.io.File; 4 | import java.util.Properties; 5 | 6 | import org.apache.commons.configuration2.Configuration; 7 | 8 | public interface ChronoSphereBaseBuilder { 9 | 10 | public ChronoSphereInMemoryBuilder inMemoryRepository(); 11 | 12 | public ChronoSpherePropertyFileBuilder fromPropertiesFile(File file); 13 | 14 | public ChronoSpherePropertyFileBuilder fromPropertiesFile(String filePath); 15 | 16 | public ChronoSpherePropertyFileBuilder fromConfiguration(Configuration configuration); 17 | 18 | public ChronoSpherePropertyFileBuilder fromProperties(Properties properties); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/builder/repository/ChronoSphereFinalizableBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.builder.repository; 2 | 3 | import org.chronos.chronosphere.api.ChronoSphere; 4 | import org.chronos.common.builder.ChronoBuilder; 5 | 6 | public interface ChronoSphereFinalizableBuilder> 7 | extends ChronoBuilder { 8 | 9 | /** 10 | * Builds the {@link ChronoSphere} instance, using the properties specified by the fluent API. 11 | * 12 | *

13 | * This method finalizes the buildLRU process. Afterwards, the builder should be discarded. 14 | * 15 | * @return The new {@link ChronoSphere} instance. Never null. 16 | */ 17 | public ChronoSphere build(); 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/builder/repository/ChronoSphereInMemoryBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.builder.repository; 2 | 3 | public interface ChronoSphereInMemoryBuilder extends ChronoSphereFinalizableBuilder { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/builder/repository/ChronoSpherePropertyFileBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.builder.repository; 2 | 3 | public interface ChronoSpherePropertyFileBuilder 4 | extends ChronoSphereFinalizableBuilder { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/ChronoSphereCommitException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class ChronoSphereCommitException extends ChronoSphereException { 4 | 5 | public ChronoSphereCommitException() { 6 | super(); 7 | } 8 | 9 | protected ChronoSphereCommitException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoSphereCommitException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoSphereCommitException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoSphereCommitException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/ChronoSphereConfigurationException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class ChronoSphereConfigurationException extends ChronoSphereException { 4 | 5 | public ChronoSphereConfigurationException() { 6 | super(); 7 | } 8 | 9 | protected ChronoSphereConfigurationException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoSphereConfigurationException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoSphereConfigurationException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoSphereConfigurationException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/ChronoSphereException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | import org.chronos.common.exceptions.ChronosException; 4 | 5 | public class ChronoSphereException extends ChronosException { 6 | 7 | public ChronoSphereException() { 8 | super(); 9 | } 10 | 11 | protected ChronoSphereException(final String message, final Throwable cause, final boolean enableSuppression, 12 | final boolean writableStackTrace) { 13 | super(message, cause, enableSuppression, writableStackTrace); 14 | } 15 | 16 | public ChronoSphereException(final String message, final Throwable cause) { 17 | super(message, cause); 18 | } 19 | 20 | public ChronoSphereException(final String message) { 21 | super(message); 22 | } 23 | 24 | public ChronoSphereException(final Throwable cause) { 25 | super(cause); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/ChronoSphereQueryException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class ChronoSphereQueryException extends ChronoSphereException { 4 | 5 | public ChronoSphereQueryException() { 6 | super(); 7 | } 8 | 9 | protected ChronoSphereQueryException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ChronoSphereQueryException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronoSphereQueryException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronoSphereQueryException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/EObjectPersistenceException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class EObjectPersistenceException extends ChronoSphereException { 4 | 5 | public EObjectPersistenceException() { 6 | super(); 7 | } 8 | 9 | protected EObjectPersistenceException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public EObjectPersistenceException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public EObjectPersistenceException(final String message) { 19 | super(message); 20 | } 21 | 22 | public EObjectPersistenceException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/ElementCannotBeEvolvedException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class ElementCannotBeEvolvedException extends MetaModelEvolutionException { 4 | 5 | public ElementCannotBeEvolvedException() { 6 | super(); 7 | } 8 | 9 | protected ElementCannotBeEvolvedException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ElementCannotBeEvolvedException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ElementCannotBeEvolvedException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ElementCannotBeEvolvedException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/MetaModelEvolutionCanceledException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class MetaModelEvolutionCanceledException extends MetaModelEvolutionException { 4 | 5 | public MetaModelEvolutionCanceledException() { 6 | super(); 7 | } 8 | 9 | protected MetaModelEvolutionCanceledException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public MetaModelEvolutionCanceledException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public MetaModelEvolutionCanceledException(final String message) { 19 | super(message); 20 | } 21 | 22 | public MetaModelEvolutionCanceledException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/MetaModelEvolutionException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class MetaModelEvolutionException extends ChronoSphereException { 4 | 5 | public MetaModelEvolutionException() { 6 | super(); 7 | } 8 | 9 | protected MetaModelEvolutionException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public MetaModelEvolutionException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public MetaModelEvolutionException(final String message) { 19 | super(message); 20 | } 21 | 22 | public MetaModelEvolutionException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/ResourceIsAlreadyClosedException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class ResourceIsAlreadyClosedException extends ChronoSphereException { 4 | 5 | public ResourceIsAlreadyClosedException() { 6 | super(); 7 | } 8 | 9 | protected ResourceIsAlreadyClosedException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public ResourceIsAlreadyClosedException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ResourceIsAlreadyClosedException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ResourceIsAlreadyClosedException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/StorageBackendCorruptedException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions; 2 | 3 | public class StorageBackendCorruptedException extends ChronoSphereException { 4 | 5 | public StorageBackendCorruptedException() { 6 | super(); 7 | } 8 | 9 | protected StorageBackendCorruptedException(final String message, final Throwable cause, 10 | final boolean enableSuppression, final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public StorageBackendCorruptedException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public StorageBackendCorruptedException(final String message) { 19 | super(message); 20 | } 21 | 22 | public StorageBackendCorruptedException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/emf/ChronoSphereEMFException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions.emf; 2 | 3 | import org.chronos.chronosphere.api.exceptions.ChronoSphereException; 4 | 5 | public class ChronoSphereEMFException extends ChronoSphereException { 6 | 7 | public ChronoSphereEMFException() { 8 | super(); 9 | } 10 | 11 | protected ChronoSphereEMFException(final String message, final Throwable cause, final boolean enableSuppression, 12 | final boolean writableStackTrace) { 13 | super(message, cause, enableSuppression, writableStackTrace); 14 | } 15 | 16 | public ChronoSphereEMFException(final String message, final Throwable cause) { 17 | super(message, cause); 18 | } 19 | 20 | public ChronoSphereEMFException(final String message) { 21 | super(message); 22 | } 23 | 24 | public ChronoSphereEMFException(final Throwable cause) { 25 | super(cause); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/emf/NameResolutionException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions.emf; 2 | 3 | public class NameResolutionException extends ChronoSphereEMFException { 4 | 5 | public NameResolutionException() { 6 | super(); 7 | } 8 | 9 | protected NameResolutionException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public NameResolutionException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public NameResolutionException(final String message) { 19 | super(message); 20 | } 21 | 22 | public NameResolutionException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/exceptions/emf/XMIConversionFailedException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.exceptions.emf; 2 | 3 | public class XMIConversionFailedException extends ChronoSphereEMFException { 4 | 5 | public XMIConversionFailedException() { 6 | super(); 7 | } 8 | 9 | protected XMIConversionFailedException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public XMIConversionFailedException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public XMIConversionFailedException(final String message) { 19 | super(message); 20 | } 21 | 22 | public XMIConversionFailedException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/query/Direction.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.query; 2 | 3 | public enum Direction { 4 | 5 | INCOMING, OUTGOING, BOTH; 6 | 7 | } -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/query/NumericQueryStepBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.query; 2 | 3 | import java.util.Optional; 4 | 5 | public interface NumericQueryStepBuilder 6 | extends QueryStepBuilder, NumericCastableQueryStepBuilder { 7 | 8 | public Optional sumAsDouble(); 9 | 10 | public Optional sumAsLong(); 11 | 12 | public Optional average(); 13 | 14 | public Optional maxAsDouble(); 15 | 16 | public Optional maxAsLong(); 17 | 18 | public Optional minAsDouble(); 19 | 20 | public Optional minAsLong(); 21 | 22 | public NumericQueryStepBuilder round(); 23 | 24 | public NumericQueryStepBuilder roundToInt(); 25 | 26 | public NumericQueryStepBuilder floor(); 27 | 28 | public NumericQueryStepBuilder ceil(); 29 | 30 | } -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/query/Order.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.query; 2 | 3 | public enum Order { 4 | 5 | ASC, DESC; 6 | } 7 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/api/query/QueryStepBuilderInternal.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.api.query; 2 | 3 | import org.chronos.chronosphere.impl.query.traversal.TraversalChainElement; 4 | 5 | public interface QueryStepBuilderInternal extends QueryStepBuilder { 6 | 7 | public TraversalChainElement getPrevious(); 8 | 9 | void setPrevious(TraversalChainElement previous); 10 | } 11 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/emf/api/ChronoEObject.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.emf.api; 2 | 3 | import org.eclipse.emf.ecore.InternalEObject; 4 | 5 | public interface ChronoEObject extends InternalEObject { 6 | 7 | public String getId(); 8 | 9 | public boolean exists(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/emf/impl/ChronoEFactory.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.emf.impl; 2 | 3 | import org.chronos.chronosphere.emf.api.ChronoEObject; 4 | import org.eclipse.emf.ecore.EClass; 5 | import org.eclipse.emf.ecore.EFactory; 6 | import org.eclipse.emf.ecore.impl.EFactoryImpl; 7 | 8 | public class ChronoEFactory extends EFactoryImpl implements EFactory { 9 | 10 | @Override 11 | protected ChronoEObject basicCreate(final EClass eClass) { 12 | ChronoEObjectImpl eObject = new ChronoEObjectImpl(); 13 | eObject.eSetClass(eClass); 14 | return eObject; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/emf/internal/api/ChronoEObjectInternal.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.emf.internal.api; 2 | 3 | import org.chronos.chronosphere.emf.api.ChronoEObject; 4 | import org.chronos.chronosphere.emf.internal.impl.store.ChronoGraphEStore; 5 | import org.eclipse.emf.ecore.InternalEObject; 6 | 7 | public interface ChronoEObjectInternal extends ChronoEObject, InternalEObject { 8 | 9 | public ChronoEObjectLifecycle getLifecycleStatus(); 10 | 11 | public void setLifecycleStatus(ChronoEObjectLifecycle status); 12 | 13 | public void unsetEContainerSilent(); 14 | 15 | public default boolean isAttached() { 16 | return this.eStore() instanceof ChronoGraphEStore; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/emf/internal/api/ChronoEObjectLifecycle.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.emf.internal.api; 2 | 3 | public enum ChronoEObjectLifecycle { 4 | 5 | TRANSIENT, PERSISTENT_CLEAN, PERSISTENT_MODIFIED, PERSISTENT_REMOVED; 6 | 7 | public boolean isTransient() { 8 | return TRANSIENT.equals(this); 9 | } 10 | 11 | public boolean isPersistent() { 12 | return this.isTransient() == false; 13 | } 14 | 15 | public boolean isRemoved() { 16 | return PERSISTENT_REMOVED.equals(this); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/emf/internal/impl/store/ChronoEStore.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.emf.internal.impl.store; 2 | 3 | import org.eclipse.emf.ecore.InternalEObject; 4 | import org.eclipse.emf.ecore.InternalEObject.EStore; 5 | 6 | public interface ChronoEStore extends EStore { 7 | 8 | /** 9 | * The base value for negative, i.e., opposite-end, eContainerFeatureID values. 10 | */ 11 | static final int EOPPOSITE_FEATURE_BASE = -1; 12 | 13 | public void setContainer(InternalEObject object, InternalEObject newContainer); 14 | 15 | public void setContainingFeatureID(InternalEObject object, int newContainerFeatureID); 16 | 17 | public int getContainingFeatureID(InternalEObject object); 18 | 19 | public void clearEContainerAndEContainingFeatureSilent(final InternalEObject eObject); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/impl/ChronoSphereFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.impl; 2 | 3 | import org.chronos.chronosphere.api.ChronoSphereFactory; 4 | import org.chronos.chronosphere.api.builder.repository.ChronoSphereBaseBuilder; 5 | import org.chronos.chronosphere.internal.builder.repository.impl.ChronoSphereBaseBuilderImpl; 6 | 7 | public class ChronoSphereFactoryImpl implements ChronoSphereFactory { 8 | 9 | @Override 10 | public ChronoSphereBaseBuilder create() { 11 | return new ChronoSphereBaseBuilderImpl(); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/impl/query/steps/object/ObjectQueryDistinctStepBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.impl.query.steps.object; 2 | 3 | import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; 4 | import org.chronos.chronosphere.impl.query.ObjectQueryStepBuilderImpl; 5 | import org.chronos.chronosphere.impl.query.traversal.TraversalChainElement; 6 | import org.chronos.chronosphere.internal.api.ChronoSphereTransactionInternal; 7 | 8 | public class ObjectQueryDistinctStepBuilder extends ObjectQueryStepBuilderImpl { 9 | 10 | public ObjectQueryDistinctStepBuilder(final TraversalChainElement previous) { 11 | super(previous); 12 | } 13 | 14 | @Override 15 | public GraphTraversal transformTraversal(final ChronoSphereTransactionInternal tx, final GraphTraversal traversal) { 16 | return traversal.dedup(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/impl/query/traversal/TraversalChainElement.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.impl.query.traversal; 2 | 3 | public interface TraversalChainElement { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/impl/query/traversal/TraversalSource.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.impl.query.traversal; 2 | 3 | import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; 4 | import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; 5 | 6 | @FunctionalInterface 7 | public interface TraversalSource extends TraversalChainElement { 8 | 9 | public GraphTraversal createTraversal(); 10 | 11 | public static TraversalSource createAnonymousSource() { 12 | return () -> (GraphTraversal) __.identity(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/impl/query/traversal/TraversalTransformer.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.impl.query.traversal; 2 | 3 | import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; 4 | import org.chronos.chronosphere.internal.api.ChronoSphereTransactionInternal; 5 | 6 | @FunctionalInterface 7 | public interface TraversalTransformer extends TraversalChainElement { 8 | 9 | public GraphTraversal transformTraversal(ChronoSphereTransactionInternal tx, GraphTraversal traversal); 10 | 11 | public static TraversalTransformer identity() { 12 | return (tx, traversal) -> traversal; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/internal/api/ChronoSphereInternal.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.internal.api; 2 | 3 | import org.chronos.chronograph.api.structure.ChronoGraph; 4 | import org.chronos.chronosphere.api.ChronoSphere; 5 | import org.chronos.chronosphere.internal.ogm.api.EObjectToGraphMapper; 6 | import org.chronos.chronosphere.internal.ogm.api.EPackageToGraphMapper; 7 | 8 | public interface ChronoSphereInternal extends ChronoSphere { 9 | 10 | public ChronoGraph getRootGraph(); 11 | 12 | public EObjectToGraphMapper getEObjectToGraphMapper(); 13 | 14 | public EPackageToGraphMapper getEPackageToGraphMapper(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/internal/api/SphereTransactionContext.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.internal.api; 2 | 3 | import org.chronos.chronograph.api.structure.ChronoGraph; 4 | import org.chronos.chronosphere.internal.ogm.api.ChronoEPackageRegistry; 5 | 6 | public interface SphereTransactionContext { 7 | 8 | public ChronoSphereTransactionInternal getTransaction(); 9 | 10 | public default ChronoGraph getGraph() { 11 | return this.getTransaction().getGraph(); 12 | } 13 | 14 | public ChronoEPackageRegistry getChronoEPackage(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/internal/builder/repository/impl/AbstractChronoSphereBuilder.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.internal.builder.repository.impl; 2 | 3 | import org.chronos.common.builder.AbstractChronoBuilder; 4 | import org.chronos.common.builder.ChronoBuilder; 5 | 6 | public abstract class AbstractChronoSphereBuilder> extends AbstractChronoBuilder 7 | implements ChronoBuilder { 8 | 9 | } -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/internal/builder/repository/impl/ChronoSphereInMemoryBuilderImpl.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.internal.builder.repository.impl; 2 | 3 | import org.chronos.chronodb.inmemory.InMemoryChronoDB; 4 | import org.chronos.chronodb.internal.api.ChronoDBConfiguration; 5 | import org.chronos.chronosphere.api.builder.repository.ChronoSphereInMemoryBuilder; 6 | 7 | public class ChronoSphereInMemoryBuilderImpl extends AbstractChronoSphereFinalizableBuilder 8 | implements ChronoSphereInMemoryBuilder { 9 | 10 | public ChronoSphereInMemoryBuilderImpl() { 11 | this.withProperty(ChronoDBConfiguration.STORAGE_BACKEND, InMemoryChronoDB.BACKEND_NAME); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/internal/ogm/api/ChronoEPackageRegistryInternal.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.internal.ogm.api; 2 | 3 | import org.eclipse.emf.ecore.EAttribute; 4 | import org.eclipse.emf.ecore.EClass; 5 | import org.eclipse.emf.ecore.EPackage; 6 | import org.eclipse.emf.ecore.EReference; 7 | 8 | public interface ChronoEPackageRegistryInternal extends ChronoEPackageRegistry { 9 | 10 | public void registerEPackage(final EPackage ePackage); 11 | 12 | public void registerEClassID(final EClass eClass, final String chronoEClassID); 13 | 14 | public void registerEAttributeID(final EAttribute eAttribute, final String chronoEAttributeID); 15 | 16 | public void registerEReferenceID(final EReference eReference, final String chronoEReferenceID); 17 | 18 | public void seal(); 19 | } 20 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/java/org/chronos/chronosphere/internal/ogm/api/GraphToEcoreMapper.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.internal.ogm.api; 2 | 3 | import org.apache.tinkerpop.gremlin.structure.Vertex; 4 | import org.eclipse.emf.ecore.EObject; 5 | 6 | public interface GraphToEcoreMapper { 7 | 8 | // ===================================================================================================================== 9 | // LOAD METHODS 10 | // ===================================================================================================================== 11 | 12 | public EObject mapVertexToEObject(Vertex vertex); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/main/resources/testinstancemodels/grabats/set0.xmi.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Txture/chronos/91b4b771be1c7c7bf3b01e05df593f026b47a7d9/org.chronos.chronosphere/src/main/resources/testinstancemodels/grabats/set0.xmi.gz -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/test/java/org/chronos/chronosphere/test/base/ChronoSphereUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.test.base; 2 | 3 | import org.chronos.common.test.ChronosUnitTest; 4 | 5 | public class ChronoSphereUnitTest extends ChronosUnitTest { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/test/java/org/chronos/chronosphere/test/cases/builder/ChronoSphereBuilderTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.test.cases.builder; 2 | 3 | import org.chronos.chronosphere.api.ChronoSphere; 4 | import org.chronos.chronosphere.test.base.ChronoSphereUnitTest; 5 | import org.chronos.common.test.junit.categories.UnitTest; 6 | import org.junit.Test; 7 | import org.junit.experimental.categories.Category; 8 | 9 | import static org.junit.Assert.*; 10 | 11 | @Category(UnitTest.class) 12 | public class ChronoSphereBuilderTest extends ChronoSphereUnitTest { 13 | 14 | @Test 15 | public void canCreateInMemorySphere() { 16 | ChronoSphere sphere = ChronoSphere.FACTORY.create().inMemoryRepository().build(); 17 | assertNotNull(sphere); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/test/java/org/chronos/chronosphere/test/cases/emf/estore/base/EmfAPI.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.test.cases.emf.estore.base; 2 | 3 | public enum EmfAPI { 4 | 5 | REFERENCE_IMPLEMENTATION, CHRONOS_TRANSIENT, CHRONOS_GRAPH; 6 | 7 | public boolean requiresChronoSphere() { 8 | if (CHRONOS_GRAPH.equals(this)) { 9 | return true; 10 | } else { 11 | return false; 12 | } 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/test/java/org/chronos/chronosphere/test/testmodels/instance/TestModel.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.test.testmodels.instance; 2 | 3 | import org.eclipse.emf.ecore.EObject; 4 | import org.eclipse.emf.ecore.EPackage; 5 | 6 | import java.util.Set; 7 | 8 | public interface TestModel extends Iterable { 9 | 10 | public EPackage getEPackage(); 11 | 12 | public Set getAllEObjects(); 13 | 14 | public EObject getEObjectByID(String id); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/test/java/org/chronos/chronosphere/test/utils/factories/EMFEFactory.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.test.utils.factories; 2 | 3 | import org.eclipse.emf.ecore.impl.EFactoryImpl; 4 | 5 | public class EMFEFactory extends EFactoryImpl { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.chronosphere/src/test/java/org/chronos/chronosphere/test/utils/factories/EStoreEFactory.java: -------------------------------------------------------------------------------- 1 | package org.chronos.chronosphere.test.utils.factories; 2 | 3 | import org.eclipse.emf.ecore.EClass; 4 | import org.eclipse.emf.ecore.EObject; 5 | import org.eclipse.emf.ecore.impl.EFactoryImpl; 6 | import org.eclipse.emf.ecore.impl.EStoreEObjectImpl; 7 | 8 | public class EStoreEFactory extends EFactoryImpl { 9 | 10 | @Override 11 | protected EObject basicCreate(final EClass eClass) { 12 | return new EStoreEObjectImpl(eClass, new EStoreEObjectImpl.EStoreImpl()); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.common.testing/build.gradle.bak: -------------------------------------------------------------------------------- 1 | // ORG.CHRONOS.COMMON.TESTING/build.gradle 2 | 3 | plugins { 4 | id 'org.jetbrains.kotlin.jvm' 5 | } 6 | 7 | compileKotlin { 8 | kotlinOptions.jvmTarget = "1.8" 9 | } 10 | compileTestKotlin { 11 | kotlinOptions.jvmTarget = "1.8" 12 | } 13 | 14 | jar { 15 | manifest { 16 | attributes 'Implementation-Title': 'Chronos Common Testing Utils' 17 | } 18 | } 19 | 20 | 21 | dependencies { 22 | implementation project(':org.chronos.common') 23 | implementation("junit:junit:${project.jUnitVersion}") 24 | implementation("org.hamcrest:hamcrest-library:${project.hamcrestVersion}") 25 | } 26 | 27 | -------------------------------------------------------------------------------- /org.chronos.common.testing/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.kotlin.jvm) 3 | } 4 | 5 | kotlin { 6 | jvmToolchain { 7 | languageVersion.set(JavaLanguageVersion.of(21)) 8 | } 9 | } 10 | 11 | tasks.jar { 12 | manifest { 13 | attributes( 14 | "Implementation-Title" to "Chronos Common Testing Utils" 15 | ) 16 | } 17 | } 18 | 19 | dependencies { 20 | implementation(project(":org.chronos.common")) 21 | 22 | api(libs.hamcrest) 23 | api("junit:junit:4.13") 24 | implementation(libs.apache.commons.io) 25 | implementation(libs.slf4j.api) 26 | implementation(libs.guava) 27 | 28 | testImplementation(libs.bundles.testing) 29 | } 30 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/main/java/org/chronos/common/test/junit/ExcludeCategories.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test.junit; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface ExcludeCategories { 11 | Class[] value(); 12 | } 13 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/main/java/org/chronos/common/test/junit/SuiteIncludes.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test.junit; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface SuiteIncludes { 11 | 12 | public Class[] value(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/main/java/org/chronos/common/test/junit/SuitePackages.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test.junit; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface SuitePackages { 11 | 12 | public String[] value(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/main/java/org/chronos/common/test/junit/categories/IntegrationTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test.junit.categories; 2 | 3 | public interface IntegrationTest { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/main/java/org/chronos/common/test/junit/categories/PerformanceTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test.junit.categories; 2 | 3 | public interface PerformanceTest { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/main/java/org/chronos/common/test/junit/categories/SlowTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test.junit.categories; 2 | 3 | public interface SlowTest { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/main/java/org/chronos/common/test/junit/categories/SystemTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test.junit.categories; 2 | 3 | public interface SystemTest { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/main/java/org/chronos/common/test/junit/categories/UnitTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test.junit.categories; 2 | 3 | public interface UnitTest { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/test/java/org/chronos/common/testing/test/cases/PersonGeneratorTest.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.testing.test.cases; 2 | 3 | import org.chronos.common.test.utils.model.person.Person; 4 | import org.chronos.common.test.utils.model.person.PersonGenerator; 5 | import org.junit.Test; 6 | 7 | import static org.junit.Assert.*; 8 | 9 | public class PersonGeneratorTest { 10 | 11 | @Test 12 | public void canGeneratePerson(){ 13 | Person person = PersonGenerator.generateRandomPerson(); 14 | assertNotNull(person); 15 | assertNotNull(person.getFirstName()); 16 | assertNotNull(person.getLastName()); 17 | assertTrue(person.getFirstName().length() > 0); 18 | assertTrue(person.getLastName().length() > 0); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /org.chronos.common.testing/src/test/java/thisIsJustForGit2.txt: -------------------------------------------------------------------------------- 1 | def -------------------------------------------------------------------------------- /org.chronos.common.testing/src/test/resources/thisIsJustForGit3.txt: -------------------------------------------------------------------------------- 1 | ghi -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/annotation/PersistentClass.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | 7 | /** 8 | * This annotation indicates that the annotated class is persisted on disk. 9 | * 10 | * @author martin.haeusler@uibk.ac.at -- Initial Contribution and API 11 | */ 12 | @Documented 13 | @Retention(RetentionPolicy.SOURCE) 14 | public @interface PersistentClass { 15 | 16 | public String value() default ""; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/autolock/BasicAutoLock.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.autolock; 2 | 3 | import static com.google.common.base.Preconditions.*; 4 | 5 | import java.util.concurrent.locks.Lock; 6 | 7 | public class BasicAutoLock extends AbstractAutoLock { 8 | 9 | private final Lock lock; 10 | 11 | public BasicAutoLock(final Lock lock) { 12 | checkNotNull(lock, "Precondition violation - argument 'lock' must not be NULL!"); 13 | this.lock = lock; 14 | } 15 | 16 | @Override 17 | protected void doLock() { 18 | this.lock.lock(); 19 | } 20 | 21 | @Override 22 | protected void doUnlock() { 23 | this.lock.unlock(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/Comparison.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration; 2 | 3 | public enum Comparison { 4 | 5 | IS_SET, IS_NOT_SET, IS_SET_TO, IS_NOT_SET_TO 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/ParameterValueConverter.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration; 2 | 3 | public interface ParameterValueConverter { 4 | 5 | public Object convert(Object rawParameter); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/ParameterValueConverters.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration; 2 | 3 | import java.io.File; 4 | 5 | public class ParameterValueConverters { 6 | 7 | public static class StringToFileConverter implements ParameterValueConverter { 8 | 9 | @Override 10 | public Object convert(final Object rawParameter) { 11 | String path = String.valueOf(rawParameter); 12 | File file = new File(path); 13 | return file; 14 | } 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/EnumFactoryMethod.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Target(ElementType.FIELD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface EnumFactoryMethod { 13 | 14 | public String value(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/IgnoredIf.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Repeatable; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | import org.chronos.common.configuration.Comparison; 11 | 12 | @Documented 13 | @Target(ElementType.FIELD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | @Repeatable(IgnoredIfConditions.class) 16 | public @interface IgnoredIf { 17 | 18 | public String field(); 19 | 20 | public Comparison comparison(); 21 | 22 | public String compareValue() default ""; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/IgnoredIfConditions.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Target(ElementType.FIELD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface IgnoredIfConditions { 13 | 14 | IgnoredIf[] value(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/Namespace.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Target(ElementType.TYPE) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface Namespace { 13 | 14 | public String value(); 15 | 16 | public boolean warningOnUnknownParameters() default true; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/Parameter.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Target(ElementType.FIELD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface Parameter { 13 | 14 | public String key() default ""; 15 | 16 | public boolean optional() default false; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/RequiredIf.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Repeatable; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | import org.chronos.common.configuration.Comparison; 11 | 12 | @Documented 13 | @Target(ElementType.FIELD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | @Repeatable(RequiredIfConditions.class) 16 | public @interface RequiredIf { 17 | 18 | public String field(); 19 | 20 | public Comparison comparison(); 21 | 22 | public String compareValue() default ""; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/RequiredIfConditions.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Target(ElementType.FIELD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface RequiredIfConditions { 13 | 14 | RequiredIf[] value(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/ValueAlias.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Repeatable; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | @Documented 11 | @Target(ElementType.FIELD) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Repeatable(ValueAliases.class) 14 | public @interface ValueAlias { 15 | 16 | public String alias(); 17 | 18 | public String mapTo(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/ValueAliases.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Target(ElementType.FIELD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface ValueAliases { 13 | 14 | ValueAlias[] value(); 15 | } 16 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/configuration/annotation/ValueConverter.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.configuration.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | import org.chronos.common.configuration.ParameterValueConverter; 10 | 11 | @Documented 12 | @Target(ElementType.FIELD) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface ValueConverter { 15 | 16 | public Class value(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/exceptions/ChronosConfigurationException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.exceptions; 2 | 3 | public class ChronosConfigurationException extends ChronosException { 4 | 5 | protected ChronosConfigurationException(final String message, final Throwable cause, 6 | final boolean enableSuppression, final boolean writableStackTrace) { 7 | super(message, cause, enableSuppression, writableStackTrace); 8 | } 9 | 10 | public ChronosConfigurationException() { 11 | super(); 12 | } 13 | 14 | public ChronosConfigurationException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public ChronosConfigurationException(final String message) { 19 | super(message); 20 | } 21 | 22 | public ChronosConfigurationException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/exceptions/ChronosException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.exceptions; 2 | 3 | public class ChronosException extends RuntimeException { 4 | 5 | public ChronosException() { 6 | super(); 7 | } 8 | 9 | public ChronosException(final String message) { 10 | super(message); 11 | } 12 | 13 | public ChronosException(final Throwable cause) { 14 | super(cause); 15 | } 16 | 17 | public ChronosException(final String message, final Throwable cause) { 18 | super(message, cause); 19 | } 20 | 21 | public ChronosException(final String message, final Throwable cause, final boolean enableSuppression, 22 | final boolean writableStackTrace) { 23 | super(message, cause, enableSuppression, writableStackTrace); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/exceptions/ChronosIOException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.exceptions; 2 | 3 | public class ChronosIOException extends ChronosException { 4 | 5 | public ChronosIOException() { 6 | super(); 7 | } 8 | 9 | protected ChronosIOException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) { 10 | super(message, cause, enableSuppression, writableStackTrace); 11 | } 12 | 13 | public ChronosIOException(final String message, final Throwable cause) { 14 | super(message, cause); 15 | } 16 | 17 | public ChronosIOException(final String message) { 18 | super(message); 19 | } 20 | 21 | public ChronosIOException(final Throwable cause) { 22 | super(cause); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/exceptions/NotInstantiableException.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.exceptions; 2 | 3 | public class NotInstantiableException extends RuntimeException { 4 | 5 | public NotInstantiableException() { 6 | super(); 7 | } 8 | 9 | public NotInstantiableException(final String message, final Throwable cause, final boolean enableSuppression, 10 | final boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | 14 | public NotInstantiableException(final String message, final Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public NotInstantiableException(final String message) { 19 | super(message); 20 | } 21 | 22 | public NotInstantiableException(final Throwable cause) { 23 | super(cause); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/java/org/chronos/common/logging/ChronosLogMarker.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.logging; 2 | 3 | import org.slf4j.Marker; 4 | import org.slf4j.MarkerFactory; 5 | 6 | public class ChronosLogMarker { 7 | 8 | public static final Marker CHRONOS_LOG_MARKER__PERFORMANCE = MarkerFactory.getMarker("org.chronos.logmarker.performance"); 9 | public static final Marker CHRONOS_LOG_MARKER__GRAPH_MODIFICATIONS = MarkerFactory.getMarker("org.chronos.logmarker.graphmodifications"); 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/resources/buildInfo.properties: -------------------------------------------------------------------------------- 1 | # GENERATED BY CHRONOS BUILD SCRIPT 2 | 3 | #Mon May 05 13:18:03 CEST 2025 4 | org.chronos.buildVersion=1.3.29-SNAPSHOT 5 | -------------------------------------------------------------------------------- /org.chronos.common/src/main/resources/thisIsJustForGit.txt: -------------------------------------------------------------------------------- 1 | adfadddass -------------------------------------------------------------------------------- /org.chronos.common/src/test/java/org/chronos/common/test/_suite/ChronosCommonTestSuite.java: -------------------------------------------------------------------------------- 1 | package org.chronos.common.test._suite; 2 | 3 | import org.chronos.common.test.junit.ExcludeCategories; 4 | import org.chronos.common.test.junit.PackageSuite; 5 | import org.chronos.common.test.junit.SuitePackages; 6 | import org.chronos.common.test.junit.categories.PerformanceTest; 7 | import org.chronos.common.test.junit.categories.SlowTest; 8 | import org.junit.experimental.categories.Category; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.Suite; 11 | 12 | @Category(Suite.class) 13 | @RunWith(PackageSuite.class) 14 | @SuitePackages("org.chronos.common.test.cases") 15 | @ExcludeCategories({PerformanceTest.class, SlowTest.class}) 16 | public class ChronosCommonTestSuite { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/booleanDependentConfiguration_correct.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.bool = true 2 | org.chronos.common.test.string = yes -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/booleanDependentConfiguration_correct2.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.bool = false 2 | # not required: org.chronos.common.test.string = yes -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/booleanDependentConfiguration_wrong.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.bool = true 2 | # missing: org.chronos.common.test.string = yes -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/myconfiguration_aliasing.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.name=Martin 2 | org.chronos.common.test.integer=47 3 | org.chronos.common.test.day=mon 4 | org.chronos.common.test.hangover=true 5 | org.chronos.common.test.motivation=100 6 | -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/myconfiguration_correct1.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.name=Martin 2 | org.chronos.common.test.integer=47 3 | org.chronos.common.test.day=SUNDAY 4 | -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/myconfiguration_correct2.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.name=Martin 2 | org.chronos.common.test.integer=47 3 | org.chronos.common.test.day=MONDAY 4 | org.chronos.common.test.hangover=true 5 | org.chronos.common.test.motivation=100 6 | -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/myconfiguration_enumFactoryMethod.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.name=Martin 2 | org.chronos.common.test.integer=47 3 | org.chronos.common.test.day=SUNDAY 4 | org.chronos.common.test.myEnum=3 5 | -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/myconfiguration_error1.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.name=Martin 2 | org.chronos.common.test.integer=47 3 | org.chronos.common.test.day=MONDAY 4 | -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/myconfiguration_error2.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.name=Martin 2 | org.chronos.common.test.integer=47 3 | org.chronos.common.test.day=NONDAY 4 | -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/myconfiguration_superfluous1.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.name=Martin 2 | org.chronos.common.test.integer=47 3 | org.chronos.common.test.day=MONDAY 4 | org.chronos.common.test.hangover=true 5 | org.chronos.common.test.motivation=100 6 | org.chronos.common.test.unknown=abc -------------------------------------------------------------------------------- /org.chronos.common/src/test/resources/myconfiguration_valueparser.properties: -------------------------------------------------------------------------------- 1 | org.chronos.common.test.name=Martin 2 | org.chronos.common.test.integer=47 3 | org.chronos.common.test.day=MONDAY 4 | org.chronos.common.test.hangover=true 5 | org.chronos.common.test.motivation=100 6 | org.chronos.common.test.coordinate=[123;456] 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | // ORG.CHRONOS/settings.gradle 2 | 3 | include "org.chronos.common", 4 | "org.chronos.chronodb.api", 5 | "org.chronos.chronodb.exodus", 6 | "org.chronos.chronograph", 7 | "org.chronos.chronosphere", 8 | "org.chronos.common.testing" 9 | --------------------------------------------------------------------------------