Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
U
UniTraX
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
anon
UniTraX
Commits
7f828d7c
Commit
7f828d7c
authored
Feb 18, 2019
by
Reinhard Munz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added source files
parent
c409cf92
Changes
188
Hide whitespace changes
Inline
Side-by-side
Showing
188 changed files
with
15934 additions
and
0 deletions
+15934
-0
source/C#/UniTraX/Core/Bookkeeper/BKQueryable.cs
source/C#/UniTraX/Core/Bookkeeper/BKQueryable.cs
+87
-0
source/C#/UniTraX/Core/Bookkeeper/Bookkeeper.cs
source/C#/UniTraX/Core/Bookkeeper/Bookkeeper.cs
+159
-0
source/C#/UniTraX/Core/Bookkeeper/BookkeeperState.cs
source/C#/UniTraX/Core/Bookkeeper/BookkeeperState.cs
+13
-0
source/C#/UniTraX/Core/Bookkeeper/EpsilonInformation.cs
source/C#/UniTraX/Core/Bookkeeper/EpsilonInformation.cs
+30
-0
source/C#/UniTraX/Core/BoundedData/BoundedDataAccess.cs
source/C#/UniTraX/Core/BoundedData/BoundedDataAccess.cs
+61
-0
source/C#/UniTraX/Core/BoundedData/ExpressionProvider.cs
source/C#/UniTraX/Core/BoundedData/ExpressionProvider.cs
+61
-0
source/C#/UniTraX/Core/BoundedData/IQueryableFactory.cs
source/C#/UniTraX/Core/BoundedData/IQueryableFactory.cs
+9
-0
source/C#/UniTraX/Core/History/HistoryEntry.cs
source/C#/UniTraX/Core/History/HistoryEntry.cs
+31
-0
source/C#/UniTraX/Core/History/ICounting.cs
source/C#/UniTraX/Core/History/ICounting.cs
+10
-0
source/C#/UniTraX/Core/History/IHistory.cs
source/C#/UniTraX/Core/History/IHistory.cs
+15
-0
source/C#/UniTraX/Core/History/InMemoryHistory.cs
source/C#/UniTraX/Core/History/InMemoryHistory.cs
+150
-0
source/C#/UniTraX/Core/History/OverlapInformation.cs
source/C#/UniTraX/Core/History/OverlapInformation.cs
+52
-0
source/C#/UniTraX/Core/Partition/ContiguousPartition.cs
source/C#/UniTraX/Core/Partition/ContiguousPartition.cs
+426
-0
source/C#/UniTraX/Core/Partition/Interval.cs
source/C#/UniTraX/Core/Partition/Interval.cs
+196
-0
source/C#/UniTraX/Core/Partition/Partition.cs
source/C#/UniTraX/Core/Partition/Partition.cs
+410
-0
source/C#/UniTraX/Core/Partition/Point.cs
source/C#/UniTraX/Core/Partition/Point.cs
+36
-0
source/C#/UniTraX/Core/Specification/Field.cs
source/C#/UniTraX/Core/Specification/Field.cs
+36
-0
source/C#/UniTraX/Core/Specification/IFieldType.cs
source/C#/UniTraX/Core/Specification/IFieldType.cs
+12
-0
source/C#/UniTraX/Core/Specification/Record.cs
source/C#/UniTraX/Core/Specification/Record.cs
+77
-0
source/C#/UniTraX/Core/Utils/FileUtils.cs
source/C#/UniTraX/Core/Utils/FileUtils.cs
+19
-0
source/C#/UniTraX/Core/Utils/Hash.cs
source/C#/UniTraX/Core/Utils/Hash.cs
+27
-0
source/C#/UniTraX/Core/Utils/ReplaceExpressionVisitor.cs
source/C#/UniTraX/Core/Utils/ReplaceExpressionVisitor.cs
+22
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/Account.cs
source/C#/UniTraX/Datasets/Financial/DataAccess/Account.cs
+62
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/AccountB.cs
source/C#/UniTraX/Datasets/Financial/DataAccess/AccountB.cs
+64
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/District.cs
source/C#/UniTraX/Datasets/Financial/DataAccess/District.cs
+52
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/DistrictB.cs
source/C#/UniTraX/Datasets/Financial/DataAccess/DistrictB.cs
+52
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/Financial.cs
source/C#/UniTraX/Datasets/Financial/DataAccess/Financial.cs
+36
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/FinancialB.cs
...ce/C#/UniTraX/Datasets/Financial/DataAccess/FinancialB.cs
+36
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/Metadata.cs
source/C#/UniTraX/Datasets/Financial/DataAccess/Metadata.cs
+100
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/Order.cs
source/C#/UniTraX/Datasets/Financial/DataAccess/Order.cs
+25
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/OrderB.cs
source/C#/UniTraX/Datasets/Financial/DataAccess/OrderB.cs
+25
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/Transaction.cs
...e/C#/UniTraX/Datasets/Financial/DataAccess/Transaction.cs
+33
-0
source/C#/UniTraX/Datasets/Financial/DataAccess/TransactionB.cs
.../C#/UniTraX/Datasets/Financial/DataAccess/TransactionB.cs
+33
-0
source/C#/UniTraX/Datasets/Financial/DataLoading/FinancialDisk.cs
...#/UniTraX/Datasets/Financial/DataLoading/FinancialDisk.cs
+194
-0
source/C#/UniTraX/Datasets/Financial/DataLoading/FinancialMem.cs
...C#/UniTraX/Datasets/Financial/DataLoading/FinancialMem.cs
+88
-0
source/C#/UniTraX/Datasets/Financial/Experiment/FinancialExperiment.cs
...TraX/Datasets/Financial/Experiment/FinancialExperiment.cs
+419
-0
source/C#/UniTraX/Datasets/Financial/Queries/AccountsPer.cs
source/C#/UniTraX/Datasets/Financial/Queries/AccountsPer.cs
+199
-0
source/C#/UniTraX/Datasets/Financial/Queries/LocalInvestigation.cs
.../UniTraX/Datasets/Financial/Queries/LocalInvestigation.cs
+59
-0
source/C#/UniTraX/Datasets/Financial/Queries/PerAmount.cs
source/C#/UniTraX/Datasets/Financial/Queries/PerAmount.cs
+62
-0
source/C#/UniTraX/Datasets/Financial/Queries/PerDatetime.cs
source/C#/UniTraX/Datasets/Financial/Queries/PerDatetime.cs
+51
-0
source/C#/UniTraX/Datasets/Financial/Queries/PerEnumerate.cs
source/C#/UniTraX/Datasets/Financial/Queries/PerEnumerate.cs
+30
-0
source/C#/UniTraX/Datasets/Financial/Queries/PerTransactions.cs
.../C#/UniTraX/Datasets/Financial/Queries/PerTransactions.cs
+86
-0
source/C#/UniTraX/Datasets/Medical/DataAccess/Laboratory.cs
source/C#/UniTraX/Datasets/Medical/DataAccess/Laboratory.cs
+100
-0
source/C#/UniTraX/Datasets/Medical/DataAccess/LaboratoryB.cs
source/C#/UniTraX/Datasets/Medical/DataAccess/LaboratoryB.cs
+100
-0
source/C#/UniTraX/Datasets/Medical/DataAccess/Medical.cs
source/C#/UniTraX/Datasets/Medical/DataAccess/Medical.cs
+26
-0
source/C#/UniTraX/Datasets/Medical/DataAccess/MedicalB.cs
source/C#/UniTraX/Datasets/Medical/DataAccess/MedicalB.cs
+26
-0
source/C#/UniTraX/Datasets/Medical/DataAccess/Metadata.cs
source/C#/UniTraX/Datasets/Medical/DataAccess/Metadata.cs
+136
-0
source/C#/UniTraX/Datasets/Medical/DataAccess/Patient.cs
source/C#/UniTraX/Datasets/Medical/DataAccess/Patient.cs
+92
-0
source/C#/UniTraX/Datasets/Medical/DataAccess/PatientB.cs
source/C#/UniTraX/Datasets/Medical/DataAccess/PatientB.cs
+94
-0
source/C#/UniTraX/Datasets/Medical/DataLoading/MedicalDisk.cs
...ce/C#/UniTraX/Datasets/Medical/DataLoading/MedicalDisk.cs
+264
-0
source/C#/UniTraX/Datasets/Medical/DataLoading/MedicalMem.cs
source/C#/UniTraX/Datasets/Medical/DataLoading/MedicalMem.cs
+64
-0
source/C#/UniTraX/Datasets/Medical/Experiment/MedicalExperiment.cs
.../UniTraX/Datasets/Medical/Experiment/MedicalExperiment.cs
+414
-0
source/C#/UniTraX/Datasets/Medical/Queries/PatientsPer.cs
source/C#/UniTraX/Datasets/Medical/Queries/PatientsPer.cs
+449
-0
source/C#/UniTraX/Datasets/Medical/Queries/PerAmount.cs
source/C#/UniTraX/Datasets/Medical/Queries/PerAmount.cs
+129
-0
source/C#/UniTraX/Datasets/Medical/Queries/PerDatetime.cs
source/C#/UniTraX/Datasets/Medical/Queries/PerDatetime.cs
+120
-0
source/C#/UniTraX/Datasets/Medical/Queries/PerEnumerate.cs
source/C#/UniTraX/Datasets/Medical/Queries/PerEnumerate.cs
+35
-0
source/C#/UniTraX/Datasets/Medical/Queries/PerLaboratories.cs
...ce/C#/UniTraX/Datasets/Medical/Queries/PerLaboratories.cs
+71
-0
source/C#/UniTraX/Datasets/Medical/Queries/WhereSusp.cs
source/C#/UniTraX/Datasets/Medical/Queries/WhereSusp.cs
+48
-0
source/C#/UniTraX/Datasets/Mobility/DataAccess/Metadata.cs
source/C#/UniTraX/Datasets/Mobility/DataAccess/Metadata.cs
+92
-0
source/C#/UniTraX/Datasets/Mobility/DataAccess/Mobility.cs
source/C#/UniTraX/Datasets/Mobility/DataAccess/Mobility.cs
+21
-0
source/C#/UniTraX/Datasets/Mobility/DataAccess/MobilityB.cs
source/C#/UniTraX/Datasets/Mobility/DataAccess/MobilityB.cs
+21
-0
source/C#/UniTraX/Datasets/Mobility/DataAccess/Ride.cs
source/C#/UniTraX/Datasets/Mobility/DataAccess/Ride.cs
+41
-0
source/C#/UniTraX/Datasets/Mobility/DataAccess/RideB.cs
source/C#/UniTraX/Datasets/Mobility/DataAccess/RideB.cs
+43
-0
source/C#/UniTraX/Datasets/Mobility/DataLoading/MobilityDisk.cs
.../C#/UniTraX/Datasets/Mobility/DataLoading/MobilityDisk.cs
+122
-0
source/C#/UniTraX/Datasets/Mobility/DataLoading/MobilityMem.cs
...e/C#/UniTraX/Datasets/Mobility/DataLoading/MobilityMem.cs
+53
-0
source/C#/UniTraX/Datasets/Mobility/Experiment/MobilityExperiment.cs
...niTraX/Datasets/Mobility/Experiment/MobilityExperiment.cs
+399
-0
source/C#/UniTraX/Datasets/Mobility/ExperimentStream/ITimedAction.cs
...niTraX/Datasets/Mobility/ExperimentStream/ITimedAction.cs
+19
-0
source/C#/UniTraX/Datasets/Mobility/ExperimentStream/MobilityExperimentStream.cs
...ets/Mobility/ExperimentStream/MobilityExperimentStream.cs
+302
-0
source/C#/UniTraX/Datasets/Mobility/ExperimentStream/TimedExecution.cs
...TraX/Datasets/Mobility/ExperimentStream/TimedExecution.cs
+105
-0
source/C#/UniTraX/Datasets/Mobility/ExperimentStream/TimedQueryExecution.cs
...Datasets/Mobility/ExperimentStream/TimedQueryExecution.cs
+112
-0
source/C#/UniTraX/Datasets/Mobility/ExperimentStream/TimedRecordLoader.cs
...X/Datasets/Mobility/ExperimentStream/TimedRecordLoader.cs
+157
-0
source/C#/UniTraX/Datasets/Mobility/Queries/ITimedAnalyticBaseFactory.cs
...aX/Datasets/Mobility/Queries/ITimedAnalyticBaseFactory.cs
+10
-0
source/C#/UniTraX/Datasets/Mobility/Queries/LocalInvestigation.cs
...#/UniTraX/Datasets/Mobility/Queries/LocalInvestigation.cs
+91
-0
source/C#/UniTraX/Datasets/Mobility/Queries/PerAmount.cs
source/C#/UniTraX/Datasets/Mobility/Queries/PerAmount.cs
+42
-0
source/C#/UniTraX/Datasets/Mobility/Queries/PerDatetime.cs
source/C#/UniTraX/Datasets/Mobility/Queries/PerDatetime.cs
+29
-0
source/C#/UniTraX/Datasets/Mobility/Queries/RidesPer.cs
source/C#/UniTraX/Datasets/Mobility/Queries/RidesPer.cs
+163
-0
source/C#/UniTraX/Datasets/Mobility/Queries/StreamInvestigation.cs
.../UniTraX/Datasets/Mobility/Queries/StreamInvestigation.cs
+157
-0
source/C#/UniTraX/Infrastructure/BudgetProvider/ConstantBudgetProvider.cs
...X/Infrastructure/BudgetProvider/ConstantBudgetProvider.cs
+17
-0
source/C#/UniTraX/Infrastructure/BudgetProvider/IBudgetProvider.cs
.../UniTraX/Infrastructure/BudgetProvider/IBudgetProvider.cs
+7
-0
source/C#/UniTraX/Infrastructure/DataConversion/DoubleType.cs
...ce/C#/UniTraX/Infrastructure/DataConversion/DoubleType.cs
+63
-0
source/C#/UniTraX/Infrastructure/DataConversion/DoubleTypeConverter.cs
...TraX/Infrastructure/DataConversion/DoubleTypeConverter.cs
+88
-0
source/C#/UniTraX/Infrastructure/DataConversion/IType.cs
source/C#/UniTraX/Infrastructure/DataConversion/IType.cs
+15
-0
source/C#/UniTraX/Infrastructure/DataConversion/ITypeConverter.cs
...#/UniTraX/Infrastructure/DataConversion/ITypeConverter.cs
+14
-0
source/C#/UniTraX/Infrastructure/DataLoading/DataTableProvider.cs
...#/UniTraX/Infrastructure/DataLoading/DataTableProvider.cs
+120
-0
source/C#/UniTraX/Infrastructure/DataLoading/TableDisk.cs
source/C#/UniTraX/Infrastructure/DataLoading/TableDisk.cs
+99
-0
source/C#/UniTraX/Infrastructure/DataLoading/TableMem.cs
source/C#/UniTraX/Infrastructure/DataLoading/TableMem.cs
+95
-0
source/C#/UniTraX/Infrastructure/Experiments/BKQueryableFactory.cs
.../UniTraX/Infrastructure/Experiments/BKQueryableFactory.cs
+29
-0
source/C#/UniTraX/Infrastructure/Experiments/ExperimentUtils.cs
.../C#/UniTraX/Infrastructure/Experiments/ExperimentUtils.cs
+196
-0
source/C#/UniTraX/Infrastructure/Experiments/PINQueryableFactory.cs
...UniTraX/Infrastructure/Experiments/PINQueryableFactory.cs
+26
-0
source/C#/UniTraX/Infrastructure/Provisioning/DatabaseServer.cs
.../C#/UniTraX/Infrastructure/Provisioning/DatabaseServer.cs
+293
-0
source/C#/UniTraX/Infrastructure/Provisioning/DatabaseServerInterface.cs
...aX/Infrastructure/Provisioning/DatabaseServerInterface.cs
+79
-0
source/C#/UniTraX/Infrastructure/Provisioning/Hosts/ExampleDBServer.cs
...TraX/Infrastructure/Provisioning/Hosts/ExampleDBServer.cs
+148
-0
source/C#/UniTraX/Infrastructure/Provisioning/IExperimentServer.cs
.../UniTraX/Infrastructure/Provisioning/IExperimentServer.cs
+17
-0
source/C#/UniTraX/Infrastructure/Provisioning/ManagedServer.cs
...e/C#/UniTraX/Infrastructure/Provisioning/ManagedServer.cs
+155
-0
source/C#/UniTraX/Infrastructure/Provisioning/PowerShellInterface.cs
...niTraX/Infrastructure/Provisioning/PowerShellInterface.cs
+58
-0
source/C#/UniTraX/Infrastructure/Provisioning/ProvisioningException.cs
...TraX/Infrastructure/Provisioning/ProvisioningException.cs
+9
-0
source/C#/UniTraX/Infrastructure/Provisioning/RamDisk.cs
source/C#/UniTraX/Infrastructure/Provisioning/RamDisk.cs
+55
-0
source/C#/UniTraX/Queries/Aggregation/Aggregate.cs
source/C#/UniTraX/Queries/Aggregation/Aggregate.cs
+173
-0
source/C#/UniTraX/Queries/Aggregation/Average.cs
source/C#/UniTraX/Queries/Aggregation/Average.cs
+96
-0
source/C#/UniTraX/Queries/Aggregation/Count.cs
source/C#/UniTraX/Queries/Aggregation/Count.cs
+50
-0
source/C#/UniTraX/Queries/Aggregation/Dummy.cs
source/C#/UniTraX/Queries/Aggregation/Dummy.cs
+48
-0
source/C#/UniTraX/Queries/Aggregation/ExponentialMechanism.cs
...ce/C#/UniTraX/Queries/Aggregation/ExponentialMechanism.cs
+72
-0
source/C#/UniTraX/Queries/Aggregation/Median.cs
source/C#/UniTraX/Queries/Aggregation/Median.cs
+103
-0
source/C#/UniTraX/Queries/Aggregation/OrderStatistic.cs
source/C#/UniTraX/Queries/Aggregation/OrderStatistic.cs
+104
-0
source/C#/UniTraX/Queries/Aggregation/Sum.cs
source/C#/UniTraX/Queries/Aggregation/Sum.cs
+95
-0
source/C#/UniTraX/Queries/Core/AnalyticBase.cs
source/C#/UniTraX/Queries/Core/AnalyticBase.cs
+108
-0
source/C#/UniTraX/Queries/Core/AnalyticBaseFactory.cs
source/C#/UniTraX/Queries/Core/AnalyticBaseFactory.cs
+47
-0
source/C#/UniTraX/Queries/Core/AnalyticBaseProvider.cs
source/C#/UniTraX/Queries/Core/AnalyticBaseProvider.cs
+40
-0
source/C#/UniTraX/Queries/Core/Conditional.cs
source/C#/UniTraX/Queries/Core/Conditional.cs
+110
-0
source/C#/UniTraX/Queries/Core/IPINQCondition.cs
source/C#/UniTraX/Queries/Core/IPINQCondition.cs
+13
-0
source/C#/UniTraX/Queries/Core/IQuery.cs
source/C#/UniTraX/Queries/Core/IQuery.cs
+14
-0
source/C#/UniTraX/Queries/Core/ISelectProvider.cs
source/C#/UniTraX/Queries/Core/ISelectProvider.cs
+10
-0
source/C#/UniTraX/Queries/Core/Merger.cs
source/C#/UniTraX/Queries/Core/Merger.cs
+106
-0
source/C#/UniTraX/Queries/Core/Multi.cs
source/C#/UniTraX/Queries/Core/Multi.cs
+60
-0
source/C#/UniTraX/Queries/Core/PINQDummy.cs
source/C#/UniTraX/Queries/Core/PINQDummy.cs
+23
-0
source/C#/UniTraX/Queries/Core/Partitioning.cs
source/C#/UniTraX/Queries/Core/Partitioning.cs
+445
-0
source/C#/UniTraX/Queries/Core/Partitioning2DGeo.cs
source/C#/UniTraX/Queries/Core/Partitioning2DGeo.cs
+154
-0
source/C#/UniTraX/Queries/Core/PerNumbers.cs
source/C#/UniTraX/Queries/Core/PerNumbers.cs
+146
-0
source/C#/UniTraX/Queries/Core/Select.cs
source/C#/UniTraX/Queries/Core/Select.cs
+44
-0
source/C#/UniTraX/Queries/Core/WhereBudget.cs
source/C#/UniTraX/Queries/Core/WhereBudget.cs
+53
-0
source/C#/UniTraX/Queries/Core/WhereRange.cs
source/C#/UniTraX/Queries/Core/WhereRange.cs
+91
-0
source/C#/UniTraX/Queries/Recorder/EntryAggregate.cs
source/C#/UniTraX/Queries/Recorder/EntryAggregate.cs
+42
-0
source/C#/UniTraX/Queries/Recorder/EntryAnalytic.cs
source/C#/UniTraX/Queries/Recorder/EntryAnalytic.cs
+34
-0
source/C#/UniTraX/Queries/Recorder/EntryNumberPartitions.cs
source/C#/UniTraX/Queries/Recorder/EntryNumberPartitions.cs
+39
-0
source/C#/UniTraX/Queries/Recorder/EntryRange.cs
source/C#/UniTraX/Queries/Recorder/EntryRange.cs
+38
-0
source/C#/UniTraX/Queries/Recorder/EntryTimed.cs
source/C#/UniTraX/Queries/Recorder/EntryTimed.cs
+38
-0
source/C#/UniTraX/Queries/Recorder/IEntry.cs
source/C#/UniTraX/Queries/Recorder/IEntry.cs
+7
-0
source/C#/UniTraX/Queries/Recorder/Recorder.cs
source/C#/UniTraX/Queries/Recorder/Recorder.cs
+103
-0
source/java/logConverter/pom.xml
source/java/logConverter/pom.xml
+26
-0
source/java/logConverter/src/logConverter/Data.java
source/java/logConverter/src/logConverter/Data.java
+336
-0
source/java/logConverter/src/logConverter/DoubleComparator.java
.../java/logConverter/src/logConverter/DoubleComparator.java
+20
-0
source/java/logConverter/src/logConverter/ExternalCommand.java
...e/java/logConverter/src/logConverter/ExternalCommand.java
+17
-0
source/java/logConverter/src/logConverter/Log.java
source/java/logConverter/src/logConverter/Log.java
+219
-0
source/java/logConverter/src/logConverter/LogEntry.java
source/java/logConverter/src/logConverter/LogEntry.java
+28
-0
source/java/logConverter/src/logConverter/LogEntryAggregate.java
...java/logConverter/src/logConverter/LogEntryAggregate.java
+250
-0
source/java/logConverter/src/logConverter/LogEntryAnalytic.java
.../java/logConverter/src/logConverter/LogEntryAnalytic.java
+188
-0
source/java/logConverter/src/logConverter/LogEntryNumberPartitions.java
...gConverter/src/logConverter/LogEntryNumberPartitions.java
+46
-0
source/java/logConverter/src/logConverter/LogEntryRange.java
source/java/logConverter/src/logConverter/LogEntryRange.java
+32
-0
source/java/logConverter/src/logConverter/Output.java
source/java/logConverter/src/logConverter/Output.java
+380
-0
source/java/logConverter/src/logConverter/Parser.java
source/java/logConverter/src/logConverter/Parser.java
+152
-0
source/java/logConverter/src/logConverter/Result.java
source/java/logConverter/src/logConverter/Result.java
+105
-0
source/java/logConverter/src/logConverter/Value.java
source/java/logConverter/src/logConverter/Value.java
+34
-0
source/java/recordTransformer/pom.xml
source/java/recordTransformer/pom.xml
+19
-0
source/java/recordTransformer/src/recordTransformer/core/DictionaryJoinerDefault.java
...r/src/recordTransformer/core/DictionaryJoinerDefault.java
+23
-0
source/java/recordTransformer/src/recordTransformer/core/DictionaryJoinerI.java
...sformer/src/recordTransformer/core/DictionaryJoinerI.java
+6
-0
source/java/recordTransformer/src/recordTransformer/core/DummyLinePreparer.java
...sformer/src/recordTransformer/core/DummyLinePreparer.java
+9
-0
source/java/recordTransformer/src/recordTransformer/core/LinePreparerI.java
...Transformer/src/recordTransformer/core/LinePreparerI.java
+6
-0
source/java/recordTransformer/src/recordTransformer/core/Record.java
.../recordTransformer/src/recordTransformer/core/Record.java
+60
-0
source/java/recordTransformer/src/recordTransformer/core/RecordBuilder.java
...Transformer/src/recordTransformer/core/RecordBuilder.java
+34
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFieldParserDate.java
...mer/src/recordTransformer/core/RecordFieldParserDate.java
+49
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFieldParserDouble.java
...r/src/recordTransformer/core/RecordFieldParserDouble.java
+34
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFieldParserDummy.java
...er/src/recordTransformer/core/RecordFieldParserDummy.java
+23
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFieldParserEnumerable.java
...c/recordTransformer/core/RecordFieldParserEnumerable.java
+73
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFieldParserEnumerableDate.java
...cordTransformer/core/RecordFieldParserEnumerableDate.java
+47
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFieldParserEnumerableDouble.java
...rdTransformer/core/RecordFieldParserEnumerableDouble.java
+46
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFieldParserI.java
...former/src/recordTransformer/core/RecordFieldParserI.java
+10
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFieldParserPlusMinus.java
...rc/recordTransformer/core/RecordFieldParserPlusMinus.java
+33
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFinalizerBudget.java
...mer/src/recordTransformer/core/RecordFinalizerBudget.java
+23
-0
source/java/recordTransformer/src/recordTransformer/core/RecordFinalizerI.java
...nsformer/src/recordTransformer/core/RecordFinalizerI.java
+8
-0
source/java/recordTransformer/src/recordTransformer/core/RecordJoinerDefault.java
...ormer/src/recordTransformer/core/RecordJoinerDefault.java
+38
-0
source/java/recordTransformer/src/recordTransformer/core/RecordJoinerI.java
...Transformer/src/recordTransformer/core/RecordJoinerI.java
+6
-0
source/java/recordTransformer/src/recordTransformer/core/Table.java
...a/recordTransformer/src/recordTransformer/core/Table.java
+216
-0
source/java/recordTransformer/src/recordTransformer/core/TableBuilder.java
...dTransformer/src/recordTransformer/core/TableBuilder.java
+67
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialDictionaryJoinerAccountDisp.java
...asets/financial/FinancialDictionaryJoinerAccountDisp.java
+25
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialDictionaryJoinerAccountTrans.java
...sets/financial/FinancialDictionaryJoinerAccountTrans.java
+22
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordFieldParserBirthNumber.java
...sets/financial/FinancialRecordFieldParserBirthNumber.java
+74
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordFieldParserDate.java
...er/datasets/financial/FinancialRecordFieldParserDate.java
+20
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordFieldParserDateTime.java
...atasets/financial/FinancialRecordFieldParserDateTime.java
+20
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordFieldParserDouble.java
.../datasets/financial/FinancialRecordFieldParserDouble.java
+14
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordFieldParserDoubleWithNull.java
...s/financial/FinancialRecordFieldParserDoubleWithNull.java
+16
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordFieldParserDoubleWithUnknown.java
...inancial/FinancialRecordFieldParserDoubleWithUnknown.java
+16
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordFieldParserEnumerate.java
...tasets/financial/FinancialRecordFieldParserEnumerate.java
+23
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordJoinerAccountDisp.java
.../datasets/financial/FinancialRecordJoinerAccountDisp.java
+45
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordJoinerAccountTrans.java
...datasets/financial/FinancialRecordJoinerAccountTrans.java
+32
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialRecordTransformer.java
...former/datasets/financial/FinancialRecordTransformer.java
+47
-0
source/java/recordTransformer/src/recordTransformer/datasets/financial/FinancialTables.java
...recordTransformer/datasets/financial/FinancialTables.java
+147
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalDictionaryJoinerPatientSpecialLab.java
...ets/medical/MedicalDictionaryJoinerPatientSpecialLab.java
+33
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalLinePreparerLaboratory.java
...ormer/datasets/medical/MedicalLinePreparerLaboratory.java
+30
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordFieldParserAnaPattern.java
.../datasets/medical/MedicalRecordFieldParserAnaPattern.java
+40
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordFieldParserDateYearFirst.java
...tasets/medical/MedicalRecordFieldParserDateYearFirst.java
+70
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordFieldParserDiagnosis.java
...r/datasets/medical/MedicalRecordFieldParserDiagnosis.java
+71
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordFieldParserDummy.java
...ormer/datasets/medical/MedicalRecordFieldParserDummy.java
+14
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordFieldParserEnumerableDouble.java
...ets/medical/MedicalRecordFieldParserEnumerableDouble.java
+52
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordFieldParserPlusMinus.java
...r/datasets/medical/MedicalRecordFieldParserPlusMinus.java
+28
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordFieldParserSex.java
...sformer/datasets/medical/MedicalRecordFieldParserSex.java
+43
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordJoinerPatientSpecialLab.java
...atasets/medical/MedicalRecordJoinerPatientSpecialLab.java
+118
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalRecordTransformer.java
...ransformer/datasets/medical/MedicalRecordTransformer.java
+34
-0
source/java/recordTransformer/src/recordTransformer/datasets/medical/MedicalTables.java
...src/recordTransformer/datasets/medical/MedicalTables.java
+356
-0
No files found.
source/C#/UniTraX/Core/Bookkeeper/BKQueryable.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.Bookkeeper
{
using
PINQ
;
using
Qbb.Core.Partition
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
public
class
BKQueryable
<
R
>
{
public
IQueryable
<
R
>
Queryable
{
get
;
private
set
;
}
public
Bookkeeper
<
R
>
Bookkeeper
{
get
;
private
set
;
}
public
Partition
Current
{
get
;
private
set
;
}
public
BKQueryable
(
IQueryable
<
R
>
queryable
,
Bookkeeper
<
R
>
bookkeeper
,
Partition
current
)
{
Queryable
=
queryable
??
throw
new
ArgumentNullException
(
nameof
(
queryable
));
Bookkeeper
=
bookkeeper
??
throw
new
ArgumentNullException
(
nameof
(
bookkeeper
));
Current
=
current
??
throw
new
ArgumentNullException
(
nameof
(
current
));
}
public
BKQueryable
(
IQueryable
<
R
>
queryable
,
Bookkeeper
<
R
>
bookkeeper
,
ContiguousPartition
current
)
:
this
(
queryable
,
bookkeeper
,
new
Partition
(
new
HashSet
<
ContiguousPartition
>()
{
current
}))
{
}
public
long
MaxUsage
()
{
return
Bookkeeper
.
MaxUsage
(
Current
).
Epsilon
;
}
public
void
WriteDetailedBudgetUseToFile
(
string
fileName
)
{
if
(
fileName
==
null
)
throw
new
ArgumentNullException
(
nameof
(
fileName
));
Bookkeeper
.
WriteDetailedBudgetUseToFile
(
fileName
);
}
public
int
BudgetIndex
()
=>
Bookkeeper
.
BudgetIndex
();
public
Boolean
CoversDataspace
()
{
return
Current
.
Parts
.
Count
>
0
;
}
public
PINQueryable
<
R
>
AsPinq
(
long
epsilon
)
{
return
Bookkeeper
.
CreatePinQueryable
(
Queryable
,
Current
,
epsilon
);
}
public
void
CleanHistory
()
=>
Bookkeeper
.
CleanHistory
();
public
BKQueryable
<
R
>
Materialize
()
{
return
new
BKQueryable
<
R
>(
Bookkeeper
.
Materialize
(
Queryable
,
Current
),
Bookkeeper
,
Current
);
}
public
BKQueryable
<
R
>
Apply
(
Func
<
Partition
,
Partition
>
function
)
{
if
(
function
==
null
)
throw
new
ArgumentNullException
(
nameof
(
function
));
return
new
BKQueryable
<
R
>(
Queryable
,
Bookkeeper
,
function
(
Current
));
}
public
BKQueryable
<
R
>
Except
(
BKQueryable
<
R
>
other
)
{
if
(
other
==
null
)
throw
new
ArgumentNullException
(
nameof
(
other
));
if
(
other
.
Bookkeeper
!=
Bookkeeper
)
throw
new
ArgumentException
(
"bookkeepers do not match"
);
return
new
BKQueryable
<
R
>(
Queryable
,
Bookkeeper
,
Current
.
RemainderWithout
(
other
.
Current
));
}
public
BKQueryable
<
R
>
Intersect
(
BKQueryable
<
R
>
other
)
{
if
(
other
==
null
)
throw
new
ArgumentNullException
(
nameof
(
other
));
if
(
other
.
Bookkeeper
!=
Bookkeeper
)
throw
new
ArgumentException
(
"bookkeepers do not match"
);
return
new
BKQueryable
<
R
>(
Queryable
,
Bookkeeper
,
Current
.
IntersectionWith
(
other
.
Current
));
}
public
BKQueryable
<
R
>
Union
(
BKQueryable
<
R
>
other
)
{
if
(
other
==
null
)
throw
new
ArgumentNullException
(
nameof
(
other
));
if
(
other
.
Bookkeeper
!=
Bookkeeper
)
throw
new
ArgumentException
(
"bookkeepers do not match"
);
return
new
BKQueryable
<
R
>(
Queryable
,
Bookkeeper
,
Current
.
UnionWith
(
other
.
Current
));
}
public
override
string
ToString
()
{
return
"BKQ:\n"
+
Bookkeeper
+
"\n"
+
Current
;
}
}
}
\ No newline at end of file
source/C#/UniTraX/Core/Bookkeeper/Bookkeeper.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.Bookkeeper
{
using
PINQ
;
using
Qbb.Core.BoundedData
;
using
Qbb.Core.History
;
using
Qbb.Core.Partition
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
public
class
Bookkeeper
<
R
>
{
private
BookkeeperState
State
;
private
BoundedDataAccess
<
R
>
BoundedDataAccess
;
public
Bookkeeper
(
BookkeeperState
state
,
BoundedDataAccess
<
R
>
boundedDataAccess
)
{
#if DEBUG
if
(
state
==
null
)
throw
new
ArgumentNullException
(
nameof
(
state
));
if
(
boundedDataAccess
==
null
)
throw
new
ArgumentNullException
(
nameof
(
boundedDataAccess
));
#endif
State
=
state
;
BoundedDataAccess
=
boundedDataAccess
;
}
public
Bookkeeper
(
Partition
focus
,
BoundedDataAccess
<
R
>
boundedDataAccess
,
IHistory
history
)
{
#if DEBUG
if
(
focus
==
null
)
throw
new
ArgumentNullException
(
nameof
(
focus
));
if
(
boundedDataAccess
==
null
)
throw
new
ArgumentNullException
(
nameof
(
boundedDataAccess
));
if
(
history
==
null
)
throw
new
ArgumentNullException
(
nameof
(
history
));
#endif
State
=
new
BookkeeperState
{
Forbidden
=
new
Partition
(
new
HashSet
<
ContiguousPartition
>()),
Focus
=
focus
??
throw
new
ArgumentNullException
(
nameof
(
focus
)),
History
=
history
??
throw
new
ArgumentNullException
(
nameof
(
history
)),
NumberPartitionsAfterCleanCount
=
0
};
BoundedDataAccess
=
boundedDataAccess
??
throw
new
ArgumentNullException
(
nameof
(
boundedDataAccess
));
}
public
Bookkeeper
(
ContiguousPartition
focus
,
BoundedDataAccess
<
R
>
boundedDataAccess
,
IHistory
history
)
:
this
(
new
Partition
(
new
HashSet
<
ContiguousPartition
>()
{
focus
}),
boundedDataAccess
,
history
)
{
}
private
Partition
GetFocus
()
{
return
State
.
Focus
;
}
private
void
SetFocus
(
Partition
focus
)
{
if
(
focus
==
null
)
throw
new
ArgumentNullException
(
nameof
(
focus
));
#if DEBUG
if
(
focus
.
Parts
.
Any
()
&&
BoundedDataAccess
.
Record
.
Fields
.
Length
!=
focus
.
Parts
.
First
().
Intervals
.
Length
)
throw
new
ArgumentException
(
"intervals do not match"
);
#endif
if
(
focus
.
Intersects
(
State
.
Forbidden
))
throw
new
ArgumentException
(
"focus cannot be expanded into previous focus space"
);
var
boundary
=
new
Partition
(
new
HashSet
<
ContiguousPartition
>()
{
BoundedDataAccess
.
Record
.
Boundary
});
if
(!
boundary
.
Encloses
(
focus
))
throw
new
ArgumentException
(
"focus cannot be expanded into space that does not exist in the database"
);
if
(
State
.
Focus
!=
null
&&
!
focus
.
Encloses
(
State
.
Focus
))
State
.
Forbidden
=
State
.
Forbidden
.
UnionWith
(
focus
.
Intersects
(
State
.
Focus
)
?
State
.
Focus
.
RemainderWithout
(
focus
)
:
State
.
Focus
);
State
.
Focus
=
focus
;
}
public
int
NumberPartitions
()
{
return
State
.
History
.
Count
;
}
public
int
NumberPartitionsAfterClean
()
{
return
State
.
NumberPartitionsAfterCleanCount
;
}
public
int
BudgetIndex
()
=>
BoundedDataAccess
.
Record
.
GetBudgetIndex
();
private
bool
BudgetGreaterEquals
(
Partition
partition
,
long
minBudget
)
{
#if DEBUG
if
(
partition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
partition
));
#endif
if
(
minBudget
<
0
)
throw
new
ArgumentException
(
"minBudget is negative"
);
if
(
minBudget
==
0
)
return
true
;
var
b
=
minBudget
-
1
;
var
newIntervals
=
new
Interval
[
BoundedDataAccess
.
Record
.
Fields
.
Length
];
for
(
var
i
=
0
;
i
<
newIntervals
.
Length
;
i
++)
newIntervals
[
i
]
=
i
!=
BoundedDataAccess
.
Record
.
GetBudgetIndex
()
?
new
Interval
(
long
.
MinValue
,
long
.
MaxValue
)
:
new
Interval
(
0L
,
b
);
return
!
partition
.
Intersects
(
new
ContiguousPartition
(
newIntervals
));
}
public
PINQueryable
<
R
>
CreatePinQueryable
(
IQueryable
<
R
>
queryable
,
Partition
partition
,
long
epsilon
)
{
if
(
queryable
==
null
)
throw
new
ArgumentNullException
(
nameof
(
queryable
));
if
(
partition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
partition
));
if
(
partition
.
Count
()
==
0
)
throw
new
ArgumentException
(
"partition contains no parts"
);
if
(!
GetFocus
().
Encloses
(
partition
))
throw
new
ArgumentException
(
"partition is not fully in focus"
);
if
(!
BudgetGreaterEquals
(
partition
,
epsilon
))
throw
new
ArgumentException
(
"not enough budget"
);
var
intersectionToBudget
=
new
Dictionary
<
Partition
,
long
>();
var
overlapInformation
=
State
.
History
.
Overlapping
(
partition
);
for
(
int
i
=
0
;
i
<
overlapInformation
.
Overlappings
.
Count
;
i
++)
{
var
intersection
=
overlapInformation
.
Intersections
[
i
];
var
budget
=
overlapInformation
.
Overlappings
[
i
].
Epsilon
+
epsilon
;
if
(!
BudgetGreaterEquals
(
intersection
,
budget
))
throw
new
ArgumentException
(
"not enough budget"
);
if
(
intersectionToBudget
.
ContainsKey
(
intersection
)
&&
intersectionToBudget
[
intersection
]
>
budget
)
budget
=
intersectionToBudget
[
intersection
];
intersectionToBudget
[
intersection
]
=
budget
;
}
State
.
History
.
Add
(
new
HistoryEntry
(
partition
,
epsilon
));
foreach
(
var
kv
in
intersectionToBudget
)
State
.
History
.
Add
(
new
HistoryEntry
(
kv
.
Key
,
kv
.
Value
));
return
new
PINQueryable
<
R
>(
BoundedDataAccess
.
BoundQueryable
(
queryable
,
partition
),
new
PINQAgentBudget
(
BoundedDataAccess
.
Record
.
Fields
[
BoundedDataAccess
.
Record
.
GetBudgetIndex
()].
FieldType
.
Convert
(
epsilon
,
true
)));
}
public
EpsilonInformation
MaxUsage
(
Partition
partition
)
{
if
(
partition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
partition
));
var
o
=
State
.
History
.
Overlapping
(
partition
);
return
!
o
.
Overlappings
.
Any
()
?
new
EpsilonInformation
(
null
,
0L
)
:
new
EpsilonInformation
(
o
.
MaxPartition
,
o
.
MaxEpsilon
);
}
public
void
CleanHistory
()
{
State
.
History
.
Clean
();
State
.
NumberPartitionsAfterCleanCount
=
State
.
History
.
Count
;
}
public
IQueryable
<
R
>
Materialize
(
IQueryable
<
R
>
queryable
,
Partition
partition
)
{
if
(
queryable
==
null
)
throw
new
ArgumentNullException
(
nameof
(
queryable
));
if
(
partition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
partition
));
if
(
partition
.
Count
()
==
0
)
throw
new
ArgumentException
(
"partition contains no parts"
);
return
BoundedDataAccess
.
BoundQueryable
(
queryable
,
partition
).
ToArray
().
AsQueryable
();
}
public
void
WriteDetailedBudgetUseToFile
(
string
fileName
)
{
#if DEBUG
if
(
fileName
==
null
)
throw
new
ArgumentNullException
(
nameof
(
fileName
));
#endif
State
.
History
.
WriteDetailedBudgetUseToFile
(
fileName
,
BoundedDataAccess
,
BoundedDataAccess
.
Record
.
Fields
[
BoundedDataAccess
.
Record
.
GetBudgetIndex
()].
FieldType
);
}
public
void
ExtendFocus
(
Partition
extension
)
{
if
(
extension
==
null
)
throw
new
ArgumentNullException
(
nameof
(
extension
));
SetFocus
(
GetFocus
().
UnionWith
(
extension
));
GetFocus
().
Clean
();
}
public
override
string
ToString
()
{
var
ret
=
"[BK: ...\n"
;
ret
+=
State
.
History
.
ToString
();
ret
+=
"]\n"
;
return
ret
;
}
}
}
\ No newline at end of file
source/C#/UniTraX/Core/Bookkeeper/BookkeeperState.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.Bookkeeper
{
using
Qbb.Core.History
;
using
Qbb.Core.Partition
;
public
class
BookkeeperState
{
public
Partition
Focus
;
public
Partition
Forbidden
;
public
IHistory
History
;
public
int
NumberPartitionsAfterCleanCount
;
}
}
\ No newline at end of file
source/C#/UniTraX/Core/Bookkeeper/EpsilonInformation.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.Bookkeeper
{
using
Qbb.Core.Partition
;
using
System
;
public
class
EpsilonInformation
{
public
Partition
Partition
{
get
;
private
set
;
}
public
long
Epsilon
{
get
;
private
set
;
}
public
EpsilonInformation
(
Partition
partition
,
long
epsiplon
)
{
// WARNING: Partition can be null if there is no partition
Partition
=
partition
;
Epsilon
=
epsiplon
;
}
public
override
bool
Equals
(
object
obj
)
{
if
(!(
obj
is
EpsilonInformation
o
))
return
false
;
if
(!
Partition
.
Equals
(
o
.
Partition
))
return
false
;
return
Epsilon
==
o
.
Epsilon
;
}
public
override
int
GetHashCode
()
{
throw
new
NotSupportedException
(
"cannot get perfect hash of partition"
);
}
}
}
\ No newline at end of file
source/C#/UniTraX/Core/BoundedData/BoundedDataAccess.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.BoundedData
{
using
Qbb.Core.History
;
using
Qbb.Core.Partition
;
using
Qbb.Core.Specification
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
public
class
BoundedDataAccess
<
R
>
:
ICounting
{
public
Record
<
R
>
Record
{
get
;
private
set
;
}
public
IQueryableFactory
<
R
>
QueryableFactory
{
get
;
private
set
;
}
private
ExpressionProvider
<
R
>
ExpressionProvider
{
get
;
set
;
}
public
BoundedDataAccess
(
Record
<
R
>
record
,
IQueryableFactory
<
R
>
queryableFactory
,
ExpressionProvider
<
R
>
expressionProvider
)
{
#if DEBUG
if
(
record
==
null
)
throw
new
ArgumentNullException
(
nameof
(
record
));
if
(
queryableFactory
==
null
)
throw
new
ArgumentNullException
(
nameof
(
queryableFactory
));
if
(
expressionProvider
==
null
)
throw
new
ArgumentNullException
(
nameof
(
expressionProvider
));
#endif
Record
=
record
;
QueryableFactory
=
queryableFactory
;
ExpressionProvider
=
expressionProvider
;
}
public
IQueryable
<
R
>
GetQueryable
()
{
return
QueryableFactory
.
Create
();
}
public
IQueryable
<
R
>
BoundQueryable
(
IQueryable
<
R
>
queryable
,
Partition
partition
)
{
#if DEBUG
if
(
queryable
==
null
)
throw
new
ArgumentNullException
(
nameof
(
queryable
));
if
(
partition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
partition
));
if
(
partition
.
Parts
.
Count
==
0
)
throw
new
ArgumentException
(
"partition contains no parts"
);
#endif
return
queryable
.
Where
(
ExpressionProvider
.
EnclosedIn
(
partition
,
Record
,
null
));
}
public
override
string
ToString
()
{
return
"[BDA: ...]"
;
}
public
int
CountWithin
(
ContiguousPartition
contiguousPartition
)
{
#if DEBUG
if
(
contiguousPartition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
contiguousPartition
));
#endif
return
BoundQueryable
(
GetQueryable
(),
new
Partition
(
new
HashSet
<
ContiguousPartition
>()
{
contiguousPartition
})).
Count
();
}
public
int
CountAll
()
{
return
CountWithin
(
Record
.
Boundary
);
}
}
}
\ No newline at end of file
source/C#/UniTraX/Core/BoundedData/ExpressionProvider.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.BoundedData
{
using
Qbb.Core.Partition
;
using
Qbb.Core.Specification
;
using
Qbb.Core.Utils
;
using
System
;
using
System.Linq
;
using
System.Linq.Expressions
;
public
class
ExpressionProvider
<
R
>
{
public
Expression
<
Func
<
R
,
bool
>>
EnclosedIn
(
Partition
partition
,
Record
<
R
>
record
,
ParameterExpression
parameter
)
{
#if DEBUG
if
(
partition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
partition
));
if
(
record
==
null
)
throw
new
ArgumentNullException
(
nameof
(
record
));
#endif
ParameterExpression
currentParameter
=
parameter
;
if
(
currentParameter
==
null
)
currentParameter
=
Expression
.
Parameter
(
typeof
(
R
));
return
partition
.
Parts
.
Aggregate
<
ContiguousPartition
,
Expression
<
Func
<
R
,
bool
>>>(
null
,
(
e
,
p
)
=>
{
if
(
e
==
null
)
return
EnclosedIn
(
p
,
currentParameter
,
record
);
else
return
Expression
.
Lambda
<
Func
<
R
,
bool
>>(
Expression
.
OrElse
(
e
.
Body
,
EnclosedIn
(
p
,
currentParameter
,
record
).
Body
),
currentParameter
);
});
}
public
Expression
<
Func
<
R
,
bool
>>
EnclosedIn
(
ContiguousPartition
contiguousPartition
,
ParameterExpression
parameter
,
Record
<
R
>
record
)
{
#if DEBUG
if
(
contiguousPartition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
contiguousPartition
));
if
(
record
==
null
)
throw
new
ArgumentNullException
(
nameof
(
record
));
if
(
contiguousPartition
.
Intervals
.
Length
!=
record
.
Fields
.
Length
)
throw
new
ArgumentException
(
"intervals do not match"
);
#endif
Expression
expression
=
null
;
ParameterExpression
currentParameter
=
parameter
;
if
(
currentParameter
==
null
)
currentParameter
=
Expression
.
Parameter
(
typeof
(
R
));
for
(
var
i
=
0
;
i
<
contiguousPartition
.
Intervals
.
Length
;
i
++)
{
var
field
=
record
.
Fields
[
i
];
var
range
=
contiguousPartition
.
Intervals
[
i
];
var
accessVisitor
=
new
ReplaceExpressionVisitor
(
field
.
Access
.
Parameters
[
0
],
currentParameter
);
var
accessBody
=
accessVisitor
.
Visit
(
field
.
Access
.
Body
);
if
(
field
.
FieldType
.
Bounds
.
Low
<
range
.
Low
)
{
var
exp
=
Expression
.
GreaterThanOrEqual
(
accessBody
,
Expression
.
Constant
(
field
.
FieldType
.
Convert
(
range
.
Low
,
false
)));
if
(
expression
==
null
)
expression
=
exp
;
else
expression
=
Expression
.
AndAlso
(
expression
,
exp
);
}
if
(
range
.
High
<
field
.
FieldType
.
Bounds
.
High
)
{
var
exp
=
Expression
.
LessThanOrEqual
(
accessBody
,
Expression
.
Constant
(
field
.
FieldType
.
Convert
(
range
.
High
,
true
)));
if
(
expression
==
null
)
expression
=
exp
;
else
expression
=
Expression
.
AndAlso
(
expression
,
exp
);
}
}
if
(
expression
==
null
)
expression
=
Expression
.
Constant
(
true
);
return
Expression
.
Lambda
<
Func
<
R
,
bool
>>(
expression
,
currentParameter
);
}
}
}
\ No newline at end of file
source/C#/UniTraX/Core/BoundedData/IQueryableFactory.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.BoundedData
{
using
System.Linq
;
public
interface
IQueryableFactory
<
R
>
{
IQueryable
<
R
>
Create
();
}
}
\ No newline at end of file
source/C#/UniTraX/Core/History/HistoryEntry.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.History
{
using
Qbb.Core.Partition
;
using
System
;
public
class
HistoryEntry
{
public
Partition
Partition
{
get
;
private
set
;
}
public
long
Epsilon
{
get
;
private
set
;
}
public
HistoryEntry
(
Partition
partition
,
long
epsilon
)
{
#if DEBUG
if
(
partition
==
null
)
throw
new
ArgumentNullException
(
nameof
(
partition
));
#endif
Partition
=
partition
;
Epsilon
=
epsilon
;
}
public
override
bool
Equals
(
object
obj
)
{
if
(!(
obj
is
HistoryEntry
o
))
return
false
;
return
Partition
.
Equals
(
o
.
Partition
)
&&
Epsilon
==
o
.
Epsilon
;
}
public
override
int
GetHashCode
()
{
throw
new
NotSupportedException
(
"cannot get perfect hash of partition"
);
}
}
}
\ No newline at end of file
source/C#/UniTraX/Core/History/ICounting.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.History
{
using
Qbb.Core.Partition
;
public
interface
ICounting
{
int
CountWithin
(
ContiguousPartition
contiguousPartition
);
int
CountAll
();
}
}
\ No newline at end of file
source/C#/UniTraX/Core/History/IHistory.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.History
{
using
Qbb.Core.Partition
;
using
Qbb.Core.Specification
;
public
interface
IHistory
{
int
Count
{
get
;
}
void
Add
(
HistoryEntry
historyEntry
);
void
Clean
();
OverlapInformation
Overlapping
(
Partition
partition
);
void
WriteDetailedBudgetUseToFile
(
string
fileName
,
ICounting
counting
,
IFieldType
budgetType
);
string
ToString
();
}
}
\ No newline at end of file
source/C#/UniTraX/Core/History/InMemoryHistory.cs
0 → 100644
View file @
7f828d7c
namespace
Qbb.Core.History
{
using
Qbb.Core.Partition
;
using
Qbb.Core.Specification
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
public
class
InMemoryHistory
:
IHistory
{
public
int
BudgetIndex
{
get
;
private
set
;
}
public
int
Count
{
get
;
private
set
;
}
private
SortedDictionary
<
long
,
Partition
>
History
;
private
SortedDictionary
<
long
,
Partition
>
WasExpanded
;
private
SortedDictionary
<
long
,
Partition
>
NeedsCleaning
;
public
InMemoryHistory
(
int
budgetIndex
)
{
BudgetIndex
=
budgetIndex
;
Count
=
0
;
History
=
new
SortedDictionary
<
long
,
Partition
>();
WasExpanded
=
new
SortedDictionary
<
long
,
Partition
>();
NeedsCleaning
=
new
SortedDictionary
<
long
,
Partition
>();
}
public
void
Add
(
HistoryEntry
historyEntry
)
{
#if DEBUG
if
(
historyEntry
==
null
)
throw
new
ArgumentNullException
(
nameof
(
historyEntry
));