BIGTOP-1984. Extract samplers library from BigPetStore data generator
Project: http://git-wip-us.apache.org/repos/asf/bigtop/repo Commit: http://git-wip-us.apache.org/repos/asf/bigtop/commit/15af83eb Tree: http://git-wip-us.apache.org/repos/asf/bigtop/tree/15af83eb Diff: http://git-wip-us.apache.org/repos/asf/bigtop/diff/15af83eb Branch: refs/heads/master Commit: 15af83ebdf9f3e039b15daa0352e802165c55bb4 Parents: 3bbbb55 Author: RJ Nowling <[email protected]> Authored: Tue Aug 25 09:21:19 2015 -0500 Committer: RJ Nowling <[email protected]> Committed: Tue Aug 25 09:21:19 2015 -0500 ---------------------------------------------------------------------- .../bigpetstore-data-generator/build.gradle | 5 +- .../bigpetstore/datagenerator/Constants.java | 99 ------ .../datagenerator/CustomerGenerator.java | 41 --- .../bigpetstore/datagenerator/DataLoader.java | 57 ---- .../datagenerator/ProductGenerator.java | 50 --- .../datagenerator/PurchasingModelGenerator.java | 40 --- .../datagenerator/StoreGenerator.java | 38 --- .../datagenerator/TransactionGenerator.java | 43 --- .../bigpetstore/datagenerator/cli/Driver.java | 315 ------------------- .../datagenerator/cli/Simulation.java | 188 ----------- .../datagenerator/datamodels/Customer.java | 59 ---- .../datagenerator/datamodels/PetSpecies.java | 22 -- .../datagenerator/datamodels/Product.java | 96 ------ .../datagenerator/datamodels/Store.java | 51 --- .../datagenerator/datamodels/Transaction.java | 68 ---- .../datamodels/inputs/InputData.java | 45 --- .../datagenerator/datamodels/inputs/Names.java | 46 --- .../datamodels/inputs/ProductCategory.java | 108 ------- .../datamodels/inputs/ZipcodeRecord.java | 90 ------ .../datagenerator/datareaders/NameReader.java | 62 ---- .../datareaders/ZipcodeReader.java | 193 ------------ .../datagenerator/framework/SeedFactory.java | 38 --- .../framework/markovmodels/MarkovModel.java | 50 --- .../markovmodels/MarkovModelBuilder.java | 53 ---- .../framework/markovmodels/MarkovProcess.java | 68 ---- .../ConditionalProbabilityDensityFunction.java | 21 -- .../framework/pdfs/ExponentialPDF.java | 31 -- .../framework/pdfs/GaussianPDF.java | 37 --- .../datagenerator/framework/pdfs/JointPDF.java | 49 --- .../framework/pdfs/MultinomialPDF.java | 57 ---- .../pdfs/ProbabilityDensityFunction.java | 21 -- .../framework/pdfs/UniformPDF.java | 36 --- .../BoundedMultiModalGaussianSampler.java | 61 ---- .../framework/samplers/ConditionalSampler.java | 21 -- .../samplers/DoubleSequenceSampler.java | 70 ----- .../framework/samplers/ExponentialSampler.java | 37 --- .../framework/samplers/GaussianSampler.java | 39 --- .../framework/samplers/MonteCarloSampler.java | 55 ---- .../samplers/RouletteWheelSampler.java | 111 ------- .../framework/samplers/Sampler.java | 21 -- .../framework/samplers/SequenceSampler.java | 70 ----- .../samplers/StatefulMonteCarloSampler.java | 60 ---- .../framework/samplers/UniformIntSampler.java | 43 --- .../framework/samplers/UniformSampler.java | 46 --- .../wfs/ConditionalWeightFunction.java | 21 -- .../framework/wfs/WeightFunction.java | 21 -- .../customer/CustomerLocationPDF.java | 69 ---- .../generators/customer/CustomerSampler.java | 56 ---- .../customer/CustomerSamplerBuilder.java | 80 ----- .../generators/customer/CustomerStorePDF.java | 41 --- .../products/ProductBuilderIterator.java | 80 ----- .../products/ProductCategoryBuilder.java | 195 ------------ .../generators/products/ProductFieldValue.java | 45 --- .../products/ProductFilterIterator.java | 72 ----- .../generators/products/ProductIterator.java | 78 ----- .../products/cartesian/CartesianProduct.java | 24 -- .../cartesian/CartesianProductBase.java | 56 ---- .../cartesian/CartesianProductField.java | 79 ----- .../collections/MediumProductCollection.java | 275 ---------------- .../collections/SmallProductCollection.java | 162 ---------- .../products/rules/AlwaysTrueRule.java | 29 -- .../generators/products/rules/AndRule.java | 50 --- .../products/rules/FieldPredicate.java | 48 --- .../generators/products/rules/NotRule.java | 36 --- .../generators/products/rules/OrRule.java | 43 --- .../generators/products/rules/Rule.java | 23 -- .../MarkovModelProductCategorySampler.java | 119 ------- .../purchase/MarkovPurchasingModel.java | 65 ---- .../purchase/MarkovPurchasingModelSampler.java | 47 --- .../purchase/MultinomialPurchasingModel.java | 67 ---- .../MultinomialPurchasingModelSampler.java | 143 --------- .../generators/purchase/PurchasingModel.java | 31 -- .../purchase/PurchasingModelSamplerBuilder.java | 108 ------- .../purchase/PurchasingProcesses.java | 39 --- .../store/StoreLocationIncomePDF.java | 65 ---- .../store/StoreLocationPopulationPDF.java | 43 --- .../generators/store/StoreSampler.java | 45 --- .../generators/store/StoreSamplerBuilder.java | 57 ---- .../transaction/CategoryWeightFunction.java | 39 --- .../transaction/CustomerInventory.java | 65 ---- .../transaction/CustomerInventoryBuilder.java | 69 ---- .../CustomerTransactionParameters.java | 73 ----- .../CustomerTransactionParametersBuilder.java | 58 ---- .../CustomerTransactionParametersSampler.java | 61 ---- ...omerTransactionParametersSamplerBuilder.java | 55 ---- .../transaction/ProductCategoryInventory.java | 58 ---- .../ProductCategoryUsageSimulator.java | 72 ----- .../ProductCategoryUsageTrajectory.java | 74 ----- .../ProposedPurchaseTimeSampler.java | 49 --- .../TransactionPurchasesHiddenMarkovModel.java | 108 ------- .../TransactionPurchasesSamplerBuilder.java | 70 ----- .../transaction/TransactionSampler.java | 56 ---- .../transaction/TransactionSamplerBuilder.java | 95 ------ .../transaction/TransactionTimePDF.java | 31 -- .../TransactionTimeSamplerBuilder.java | 56 ---- .../datagenerators/bigpetstore/Constants.java | 99 ++++++ .../bigpetstore/CustomerGenerator.java | 41 +++ .../datagenerators/bigpetstore/DataLoader.java | 57 ++++ .../bigpetstore/ProductGenerator.java | 50 +++ .../bigpetstore/PurchasingModelGenerator.java | 40 +++ .../bigpetstore/StoreGenerator.java | 38 +++ .../bigpetstore/TransactionGenerator.java | 43 +++ .../datagenerators/bigpetstore/cli/Driver.java | 315 +++++++++++++++++++ .../bigpetstore/cli/Simulation.java | 188 +++++++++++ .../bigpetstore/datamodels/Customer.java | 59 ++++ .../bigpetstore/datamodels/PetSpecies.java | 22 ++ .../bigpetstore/datamodels/Product.java | 96 ++++++ .../bigpetstore/datamodels/Store.java | 51 +++ .../bigpetstore/datamodels/Transaction.java | 68 ++++ .../datamodels/inputs/InputData.java | 45 +++ .../bigpetstore/datamodels/inputs/Names.java | 46 +++ .../datamodels/inputs/ProductCategory.java | 108 +++++++ .../datamodels/inputs/ZipcodeRecord.java | 90 ++++++ .../bigpetstore/datareaders/NameReader.java | 62 ++++ .../bigpetstore/datareaders/ZipcodeReader.java | 193 ++++++++++++ .../customer/CustomerLocationPDF.java | 69 ++++ .../generators/customer/CustomerSampler.java | 56 ++++ .../customer/CustomerSamplerBuilder.java | 80 +++++ .../generators/customer/CustomerStorePDF.java | 41 +++ .../products/ProductBuilderIterator.java | 80 +++++ .../products/ProductCategoryBuilder.java | 195 ++++++++++++ .../generators/products/ProductFieldValue.java | 45 +++ .../products/ProductFilterIterator.java | 72 +++++ .../generators/products/ProductIterator.java | 78 +++++ .../products/cartesian/CartesianProduct.java | 24 ++ .../cartesian/CartesianProductBase.java | 56 ++++ .../cartesian/CartesianProductField.java | 79 +++++ .../collections/MediumProductCollection.java | 275 ++++++++++++++++ .../collections/SmallProductCollection.java | 162 ++++++++++ .../products/rules/AlwaysTrueRule.java | 29 ++ .../generators/products/rules/AndRule.java | 50 +++ .../products/rules/FieldPredicate.java | 48 +++ .../generators/products/rules/NotRule.java | 36 +++ .../generators/products/rules/OrRule.java | 43 +++ .../generators/products/rules/Rule.java | 23 ++ .../MarkovModelProductCategorySampler.java | 119 +++++++ .../purchase/MarkovPurchasingModel.java | 65 ++++ .../purchase/MarkovPurchasingModelSampler.java | 47 +++ .../purchase/MultinomialPurchasingModel.java | 67 ++++ .../MultinomialPurchasingModelSampler.java | 143 +++++++++ .../generators/purchase/PurchasingModel.java | 31 ++ .../purchase/PurchasingModelSamplerBuilder.java | 108 +++++++ .../purchase/PurchasingProcesses.java | 39 +++ .../store/StoreLocationIncomePDF.java | 65 ++++ .../store/StoreLocationPopulationPDF.java | 43 +++ .../generators/store/StoreSampler.java | 45 +++ .../generators/store/StoreSamplerBuilder.java | 57 ++++ .../transaction/CategoryWeightFunction.java | 39 +++ .../transaction/CustomerInventory.java | 65 ++++ .../transaction/CustomerInventoryBuilder.java | 67 ++++ .../CustomerTransactionParameters.java | 73 +++++ .../CustomerTransactionParametersBuilder.java | 58 ++++ .../CustomerTransactionParametersSampler.java | 61 ++++ ...omerTransactionParametersSamplerBuilder.java | 55 ++++ .../transaction/ProductCategoryInventory.java | 58 ++++ .../ProductCategoryUsageSimulator.java | 72 +++++ .../ProductCategoryUsageTrajectory.java | 74 +++++ .../ProposedPurchaseTimeSampler.java | 49 +++ .../TransactionPurchasesHiddenMarkovModel.java | 108 +++++++ .../TransactionPurchasesSamplerBuilder.java | 70 +++++ .../transaction/TransactionSampler.java | 56 ++++ .../transaction/TransactionSamplerBuilder.java | 95 ++++++ .../transaction/TransactionTimePDF.java | 31 ++ .../TransactionTimeSamplerBuilder.java | 56 ++++ .../datagenerator/datamodels/TestProduct.java | 77 ----- .../markovmodels/TestMarkovModelBuilder.java | 76 ----- .../markovmodels/TestMarkovProcess.java | 53 ---- .../framework/pdfs/TestMultinomialPDF.java | 41 --- .../TestBoundedMultiModalGaussianSampler.java | 48 --- .../samplers/TestExponentialSampler.java | 41 --- .../framework/samplers/TestGaussianSampler.java | 43 --- .../samplers/TestRouletteWheelSampler.java | 71 ----- .../framework/samplers/TestSequenceSampler.java | 38 --- .../samplers/TestUniformIntSampler.java | 60 ---- .../customer/TestCustomerLocationPDF.java | 57 ---- .../customer/TestCustomerSampler.java | 106 ------- .../customer/TestCustomerSamplerBuilder.java | 76 ----- .../cartesian/TestCartesianProductBase.java | 56 ---- .../cartesian/TestCartesianProductField.java | 72 ----- .../products/rules/TestAlwaysTrueRule.java | 30 -- .../generators/products/rules/TestAndRule.java | 51 --- .../products/rules/TestFieldPredicate.java | 42 --- .../generators/products/rules/TestNotRule.java | 36 --- .../generators/products/rules/TestOrRule.java | 51 --- .../TestProductCategoryMarkovModelSampler.java | 108 ------- .../purchase/TestPurchasingModelSampler.java | 100 ------ .../TestPurchasingModelSamplerBuilder.java | 100 ------ .../purchase/TestPurchasingProcesses.java | 70 ----- .../store/TestStoreLocationIncomePDF.java | 48 --- .../store/TestStoreLocationPopulationPDF.java | 48 --- .../generators/store/TestStoreSampler.java | 58 ---- .../store/TestStoreSamplerBuilder.java | 58 ---- .../transaction/TestCustomerInventory.java | 94 ------ .../TestCustomerInventoryBuilder.java | 91 ------ .../TestCustomerTransactionParameters.java | 69 ---- ...estCustomerTransactionParametersBuilder.java | 48 --- ...estCustomerTransactionParametersSampler.java | 47 --- ...omerTransactionParametersSamplerBuilder.java | 47 --- .../TestProductCategoryInventory.java | 75 ----- .../TestProductCategoryUsageSimulator.java | 51 --- .../TestProductCategoryUsageTrajectory.java | 69 ---- ...stTransactionPurchasesHiddenMarkovModel.java | 205 ------------ .../transaction/TestTransactionTimePDF.java | 35 --- .../bigpetstore/datamodels/TestProduct.java | 77 +++++ .../customer/TestCustomerLocationPDF.java | 58 ++++ .../customer/TestCustomerSampler.java | 108 +++++++ .../customer/TestCustomerSamplerBuilder.java | 77 +++++ .../cartesian/TestCartesianProductBase.java | 57 ++++ .../cartesian/TestCartesianProductField.java | 74 +++++ .../products/rules/TestAlwaysTrueRule.java | 32 ++ .../generators/products/rules/TestAndRule.java | 55 ++++ .../products/rules/TestFieldPredicate.java | 44 +++ .../generators/products/rules/TestNotRule.java | 39 +++ .../generators/products/rules/TestOrRule.java | 55 ++++ .../TestProductCategoryMarkovModelSampler.java | 108 +++++++ .../purchase/TestPurchasingModelSampler.java | 100 ++++++ .../TestPurchasingModelSamplerBuilder.java | 100 ++++++ .../purchase/TestPurchasingProcesses.java | 70 +++++ .../store/TestStoreLocationIncomePDF.java | 49 +++ .../store/TestStoreLocationPopulationPDF.java | 49 +++ .../generators/store/TestStoreSampler.java | 59 ++++ .../store/TestStoreSamplerBuilder.java | 59 ++++ .../transaction/TestCustomerInventory.java | 94 ++++++ .../TestCustomerInventoryBuilder.java | 91 ++++++ .../TestCustomerTransactionParameters.java | 69 ++++ ...estCustomerTransactionParametersBuilder.java | 48 +++ ...estCustomerTransactionParametersSampler.java | 47 +++ ...omerTransactionParametersSamplerBuilder.java | 47 +++ .../TestProductCategoryInventory.java | 75 +++++ .../TestProductCategoryUsageSimulator.java | 53 ++++ .../TestProductCategoryUsageTrajectory.java | 70 +++++ ...stTransactionPurchasesHiddenMarkovModel.java | 205 ++++++++++++ .../transaction/TestTransactionTimePDF.java | 35 +++ .../bigtop-samplers/README.md | 49 +++ .../bigtop-samplers/build.gradle | 64 ++++ .../bigtop-samplers/settings.gradle | 16 + .../datagenerators/samplers/SeedFactory.java | 38 +++ .../samplers/markovmodels/MarkovModel.java | 50 +++ .../markovmodels/MarkovModelBuilder.java | 53 ++++ .../samplers/markovmodels/MarkovProcess.java | 68 ++++ .../ConditionalProbabilityDensityFunction.java | 21 ++ .../samplers/pdfs/ExponentialPDF.java | 31 ++ .../samplers/pdfs/GaussianPDF.java | 37 +++ .../datagenerators/samplers/pdfs/JointPDF.java | 49 +++ .../samplers/pdfs/MultinomialPDF.java | 57 ++++ .../pdfs/ProbabilityDensityFunction.java | 21 ++ .../samplers/pdfs/UniformPDF.java | 36 +++ .../BoundedMultiModalGaussianSampler.java | 61 ++++ .../samplers/samplers/ConditionalSampler.java | 21 ++ .../samplers/DoubleSequenceSampler.java | 70 +++++ .../samplers/samplers/ExponentialSampler.java | 37 +++ .../samplers/samplers/GaussianSampler.java | 39 +++ .../samplers/samplers/MonteCarloSampler.java | 55 ++++ .../samplers/samplers/RouletteWheelSampler.java | 111 +++++++ .../samplers/samplers/Sampler.java | 21 ++ .../samplers/samplers/SequenceSampler.java | 70 +++++ .../samplers/StatefulMonteCarloSampler.java | 60 ++++ .../samplers/samplers/UniformIntSampler.java | 43 +++ .../samplers/samplers/UniformSampler.java | 46 +++ .../samplers/wfs/ConditionalWeightFunction.java | 21 ++ .../samplers/wfs/WeightFunction.java | 21 ++ .../markovmodels/TestMarkovModelBuilder.java | 76 +++++ .../markovmodels/TestMarkovProcess.java | 53 ++++ .../samplers/pdfs/TestMultinomialPDF.java | 42 +++ .../TestBoundedMultiModalGaussianSampler.java | 50 +++ .../samplers/TestExponentialSampler.java | 41 +++ .../samplers/samplers/TestGaussianSampler.java | 43 +++ .../samplers/TestRouletteWheelSampler.java | 71 +++++ .../samplers/samplers/TestSequenceSampler.java | 38 +++ .../samplers/TestUniformIntSampler.java | 60 ++++ 270 files changed, 9015 insertions(+), 8855 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/build.gradle b/bigtop-data-generators/bigpetstore-data-generator/build.gradle index 8c2ea57..d18cac5 100644 --- a/bigtop-data-generators/bigpetstore-data-generator/build.gradle +++ b/bigtop-data-generators/bigpetstore-data-generator/build.gradle @@ -18,7 +18,7 @@ apply plugin: 'groovy' apply plugin: 'java' apply plugin: 'maven' group = 'org.apache.bigtop' -version = '0.9.0-SNAPSHOT' +version = '1.1.0-SNAPSHOT' jar { @@ -30,7 +30,7 @@ jar { manifest { attributes 'Title': 'BigPetStore Data Generator', 'Version': version - attributes 'Main-Class': 'org.apache.bigtop.bigpetstore.datagenerator.cli.Driver' + attributes 'Main-Class': 'org.apache.bigtop.datagenerators.bigpetstore.cli.Driver' } } @@ -59,6 +59,7 @@ dependencies { compile 'com.google.guava:guava:18.0' compile 'com.google.code.gson:gson:2.3' compile 'org.apache.commons:commons-lang3:3.4' + compile 'org.apache.bigtop:bigtop-samplers:1.1.0-SNAPSHOT' testCompile 'junit:junit:4.+' } http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/Constants.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/Constants.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/Constants.java deleted file mode 100644 index ff87c2e..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/Constants.java +++ /dev/null @@ -1,99 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator; - -import java.io.File; -import java.util.List; -import java.util.Set; - -import org.apache.commons.lang3.tuple.Pair; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; - -public class Constants -{ - public static enum PurchasingModelType - { - MULTINOMIAL, - MARKOV; - } - - public static enum ProductsCollectionSize - { - SMALL, - MEDIUM; - } - - public static final File COORDINATES_FILE = new File("zips.csv"); - public static final File INCOMES_FILE = new File("ACS_12_5YR_S1903/ACS_12_5YR_S1903_with_ann.csv"); - public static final File POPULATION_FILE = new File("population_data.csv"); - - public static final File NAMEDB_FILE = new File("namedb/data/data.dat"); - - public static final ProductsCollectionSize PRODUCTS_COLLECTION = ProductsCollectionSize.MEDIUM; - - public static final double INCOME_SCALING_FACTOR = 100.0; - - public static final int MIN_PETS = 1; - public static final int MAX_PETS = 10; - - public static final List<Pair<Double, Double>> TRANSACTION_TRIGGER_TIME_GAUSSIANS = ImmutableList.of(Pair.of(5.0, 2.0)); - public static final List<Pair<Double, Double>> PURCHASE_TRIGGER_TIME_GAUSSIANS = ImmutableList.of(Pair.of(10.0, 4.0)); - - public static final double TRANSACTION_TRIGGER_TIME_MAX = 10.0; - public static final double TRANSACTION_TRIGGER_TIME_MIN = 1.0; - - public static final double PURCHASE_TRIGGER_TIME_MAX = 20.0; - public static final double PURCHASE_TRIGGER_TIME_MIN = 1.0; - - public static final double AVERAGE_CUSTOMER_STORE_DISTANCE = 5.0; // miles - - public static final PurchasingModelType PURCHASING_MODEL_TYPE = PurchasingModelType.MULTINOMIAL; - - public static final List<Pair<Double, Double>> PRODUCT_MSM_FIELD_WEIGHT_GAUSSIANS = ImmutableList.of(Pair.of(0.15, 0.1), Pair.of(0.85, 0.1)); - public static final double PRODUCT_MSM_FIELD_WEIGHT_LOWERBOUND = 0.05; - public static final double PRODUCT_MSM_FIELD_WEIGHT_UPPERBOUND = 0.95; - - public static final List<Pair<Double, Double>> PRODUCT_MSM_FIELD_SIMILARITY_WEIGHT_GAUSSIANS = ImmutableList.of(Pair.of(0.15, 0.1), Pair.of(0.85, 0.1)); - public static final double PRODUCT_MSM_FIELD_SIMILARITY_WEIGHT_LOWERBOUND = 0.05; - public static final double PRODUCT_MSM_FIELD_SIMILARITY_WEIGHT_UPPERBOUND = 0.95; - - public static final List<Pair<Double, Double>> PRODUCT_MSM_LOOPBACK_WEIGHT_GAUSSIANS = ImmutableList.of(Pair.of(0.25, 0.1), Pair.of(0.75, 0.1)); - public static final double PRODUCT_MSM_LOOPBACK_WEIGHT_LOWERBOUND = 0.05; - public static final double PRODUCT_MSM_LOOPBACK_WEIGHT_UPPERBOUND = 0.95; - - public static final double PRODUCT_MULTINOMIAL_POSITIVE_WEIGHT = 10.0; - public static final double PRODUCT_MULTINOMIAL_NEUTRAL_WEIGHT = 1.0; - public static final double PRODUCT_MULTINOMIAL_NEGATIVE_WEIGHT = 0.1; - public static final int PRODUCT_MULTINOMIAL_POSITIVE_COUNT_MIN = 1; - public static final double PRODUCT_MULTINOMIAL_POSITIVE_FREQUENCY = 0.1; // 10% - - public static final String PRODUCT_QUANTITY = "quantity"; - public static final String PRODUCT_CATEGORY = "category"; - public static final String PRODUCT_UNIT_PRICE = "unitPrice"; - public static final String PRODUCT_PRICE = "price"; - - /* - * Until we have a more intelligent way (e.g., based on range) of dealing with prices, - * let's exclude them. - */ - public static final Set<String> PRODUCT_MODEL_EXCLUDED_FIELDS = ImmutableSet.of(PRODUCT_CATEGORY, - PRODUCT_UNIT_PRICE, - PRODUCT_PRICE); - - public static final double STOP_CATEGORY_WEIGHT = 0.01; -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/CustomerGenerator.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/CustomerGenerator.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/CustomerGenerator.java deleted file mode 100644 index 799b2e3..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/CustomerGenerator.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator; - -import java.util.List; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Customer; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Store; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.InputData; -import org.apache.bigtop.bigpetstore.datagenerator.framework.SeedFactory; -import org.apache.bigtop.bigpetstore.datagenerator.framework.samplers.Sampler; -import org.apache.bigtop.bigpetstore.datagenerator.generators.customer.CustomerSamplerBuilder; - -public class CustomerGenerator -{ - final Sampler<Customer> sampler; - - public CustomerGenerator(InputData inputData, List<Store> stores, SeedFactory seedFactory) - { - CustomerSamplerBuilder builder = new CustomerSamplerBuilder(stores, inputData, seedFactory); - sampler = builder.build(); - } - - public Customer generate() throws Exception - { - return sampler.sample(); - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/DataLoader.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/DataLoader.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/DataLoader.java deleted file mode 100644 index a67acd7..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/DataLoader.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator; - -import java.io.BufferedInputStream; -import java.io.File; -import java.io.InputStream; -import java.util.List; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.InputData; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.Names; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.ZipcodeRecord; -import org.apache.bigtop.bigpetstore.datagenerator.datareaders.NameReader; -import org.apache.bigtop.bigpetstore.datagenerator.datareaders.ZipcodeReader; - -public class DataLoader -{ - private InputStream getResource(File filename) throws Exception - { - InputStream stream = getClass().getResourceAsStream("/input_data/" + filename); - return new BufferedInputStream(stream); - } - - public InputData loadData() throws Exception - { - - System.out.println("Reading zipcode data"); - ZipcodeReader zipcodeReader = new ZipcodeReader(); - zipcodeReader.setCoordinatesFile(getResource(Constants.COORDINATES_FILE)); - zipcodeReader.setIncomesFile(getResource(Constants.INCOMES_FILE)); - zipcodeReader.setPopulationFile(getResource(Constants.POPULATION_FILE)); - List<ZipcodeRecord> zipcodeTable = zipcodeReader.readData(); - System.out.println("Read " + zipcodeTable.size() + " zipcode entries"); - - System.out.println("Reading name data"); - NameReader nameReader = new NameReader(getResource(Constants.NAMEDB_FILE)); - Names names = nameReader.readData(); - System.out.println("Read " + names.getFirstNames().size() + " first names and " + names.getLastNames().size() + " last names"); - - InputData inputData = new InputData(zipcodeTable, names); - - return inputData; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/ProductGenerator.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/ProductGenerator.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/ProductGenerator.java deleted file mode 100644 index cd008ac..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/ProductGenerator.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator; - -import java.util.List; - -import org.apache.bigtop.bigpetstore.datagenerator.Constants.ProductsCollectionSize; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.ProductCategory; -import org.apache.bigtop.bigpetstore.datagenerator.generators.products.collections.MediumProductCollection; -import org.apache.bigtop.bigpetstore.datagenerator.generators.products.collections.SmallProductCollection; - -public class ProductGenerator -{ - ProductsCollectionSize collection; - - public ProductGenerator(ProductsCollectionSize collection) - { - this.collection = collection; - } - - public List<ProductCategory> generate() - { - List<ProductCategory> categories; - - if(collection.equals(ProductsCollectionSize.SMALL)) - { - SmallProductCollection collection = new SmallProductCollection(); - categories = collection.generateProductCategory(); - } else - { - MediumProductCollection collection = new MediumProductCollection(); - categories = collection.generateProductCategory(); - } - - return categories; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/PurchasingModelGenerator.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/PurchasingModelGenerator.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/PurchasingModelGenerator.java deleted file mode 100644 index 6994d9e..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/PurchasingModelGenerator.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator; - -import java.util.Collection; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.ProductCategory; -import org.apache.bigtop.bigpetstore.datagenerator.framework.SeedFactory; -import org.apache.bigtop.bigpetstore.datagenerator.framework.samplers.Sampler; -import org.apache.bigtop.bigpetstore.datagenerator.generators.purchase.PurchasingModel; -import org.apache.bigtop.bigpetstore.datagenerator.generators.purchase.PurchasingModelSamplerBuilder; - -public class PurchasingModelGenerator -{ - final Sampler<? extends PurchasingModel> sampler; - - public PurchasingModelGenerator(Collection<ProductCategory> productCategories, SeedFactory seedFactory) throws Exception - { - PurchasingModelSamplerBuilder builder = new PurchasingModelSamplerBuilder(productCategories, seedFactory); - sampler = builder.build(); - } - - public PurchasingModel generate() throws Exception - { - return sampler.sample(); - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/StoreGenerator.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/StoreGenerator.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/StoreGenerator.java deleted file mode 100644 index df6d759..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/StoreGenerator.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Store; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.InputData; -import org.apache.bigtop.bigpetstore.datagenerator.framework.SeedFactory; -import org.apache.bigtop.bigpetstore.datagenerator.framework.samplers.Sampler; -import org.apache.bigtop.bigpetstore.datagenerator.generators.store.StoreSamplerBuilder; - -public class StoreGenerator -{ - final Sampler<Store> sampler; - - public StoreGenerator(InputData inputData, SeedFactory seedFactory) - { - StoreSamplerBuilder builder = new StoreSamplerBuilder(inputData.getZipcodeTable(), seedFactory); - sampler = builder.build(); - } - - public Store generate() throws Exception - { - return sampler.sample(); - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/TransactionGenerator.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/TransactionGenerator.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/TransactionGenerator.java deleted file mode 100644 index 8f78bb7..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/TransactionGenerator.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator; - -import java.util.Collection; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Customer; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Transaction; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.ProductCategory; -import org.apache.bigtop.bigpetstore.datagenerator.framework.SeedFactory; -import org.apache.bigtop.bigpetstore.datagenerator.framework.samplers.Sampler; -import org.apache.bigtop.bigpetstore.datagenerator.generators.purchase.PurchasingModel; -import org.apache.bigtop.bigpetstore.datagenerator.generators.transaction.TransactionSamplerBuilder; - -public class TransactionGenerator -{ - Sampler<Transaction> sampler; - - public TransactionGenerator(Customer customer, PurchasingModel profile, - Collection<ProductCategory> productCategories, SeedFactory seedFactory) throws Exception - { - sampler = new TransactionSamplerBuilder(productCategories, - customer, profile, seedFactory).build(); - } - - public Transaction generate() throws Exception - { - return sampler.sample(); - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/cli/Driver.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/cli/Driver.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/cli/Driver.java deleted file mode 100644 index 3fdef68..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/cli/Driver.java +++ /dev/null @@ -1,315 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.cli; - -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.OutputStream; -import java.util.Collection; -import java.util.List; - -import org.apache.bigtop.bigpetstore.datagenerator.DataLoader; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Customer; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Product; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Store; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Transaction; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.InputData; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.ProductCategory; -import org.apache.bigtop.bigpetstore.datagenerator.generators.purchase.PurchasingModel; -import org.apache.commons.lang3.tuple.Pair; - - -public class Driver -{ - int nStores; - int nCustomers; - int nPurchasingModels; - double simulationTime; - long seed; - File outputDir; - - static final int NPARAMS = 6; - - private void printUsage() - { - String usage = "BigPetStore Data Generator\n" + - "\n" + - "Usage: java -jar bps-data-generator-v0.2.java outputDir nStores nCustomers nPurchasingModels simulationLength seed\n" + - "\n" + - "outputDir - (string) directory to write files\n" + - "nStores - (int) number of stores to generate\n" + - "nCustomers - (int) number of customers to generate\n" + - "nPurchasingModels - (int) number of purchasing models to generate\n" + - "simulationLength - (float) number of days to simulate\n" + - "seed - (long) seed for RNG. If not given, one is reandomly generated.\n"; - - System.out.println(usage); - } - - public void parseArgs(String[] args) - { - if(args.length != NPARAMS && args.length != (NPARAMS - 1)) - { - printUsage(); - System.exit(1); - } - - int i = -1; - - outputDir = new File(args[++i]); - if(! outputDir.exists()) - { - System.err.println("Given path (" + args[i] + ") does not exist.\n"); - printUsage(); - System.exit(1); - } - - if(! outputDir.isDirectory()) - { - System.err.println("Given path (" + args[i] + ") is not a directory.\n"); - printUsage(); - System.exit(1); - } - - try - { - nStores = Integer.parseInt(args[++i]); - } - catch(Exception e) - { - System.err.println("Unable to parse '" + args[i] + "' as an integer for nStores.\n"); - printUsage(); - System.exit(1); - } - - try - { - nCustomers = Integer.parseInt(args[++i]); - } - catch(Exception e) - { - System.err.println("Unable to parse '" + args[i] + "' as an integer for nCustomers.\n"); - printUsage(); - System.exit(1); - } - - try - { - nPurchasingModels = Integer.parseInt(args[++i]); - } - catch(Exception e) - { - System.err.println("Unable to parse '" + args[i] + "' as an integer for nPurchasingModels.\n"); - printUsage(); - System.exit(1); - } - - try - { - simulationTime = Double.parseDouble(args[++i]); - } - catch(Exception e) - { - System.err.println("Unable to parse '" + args[i] + "' as a float for simulationLength.\n"); - printUsage(); - System.exit(1); - } - - try - { - seed = Long.parseLong(args[++i]); - } - catch(Exception e) - { - System.err.println("Unable to parse '" + args[i] + "' as a long for the seed.\n"); - printUsage(); - System.exit(1); - } - } - - private void writeTransactions(Collection<Transaction> transactions) throws Exception - { - File outputFile = new File(outputDir.toString() + File.separator + "transactions.txt"); - System.out.println(outputFile.toString()); - OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile)); - - for(Transaction transaction : transactions) - { - for(Product product : transaction.getProducts()) - { - String record = transaction.getId() + ","; - record += transaction.getDateTime() + ","; - record += transaction.getStore().getId() + ","; - record += transaction.getStore().getLocation().getZipcode() + ","; - record += transaction.getStore().getLocation().getCity() + ","; - record += transaction.getStore().getLocation().getState() + ","; - record += transaction.getCustomer().getId() + ","; - Pair<String, String> name = transaction.getCustomer().getName(); - record += name.getLeft() + " " + name.getRight() + ","; - record += transaction.getCustomer().getLocation().getZipcode() + ","; - record += transaction.getCustomer().getLocation().getCity() + ","; - record += transaction.getCustomer().getLocation().getState() + ","; - record += product.toString() + "\n"; - - outputStream.write(record.getBytes()); - } - } - - outputStream.close(); - } - - private void writeCustomers(Collection<Customer> customers) throws Exception - { - File outputFile = new File(outputDir.toString() + File.separator + "customers.txt"); - System.out.println(outputFile.toString()); - OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile)); - - for(Customer customer : customers) - { - String record = customer.getId() + ","; - Pair<String, String> name = customer.getName(); - record += name.getLeft() + "," + name.getRight() + ","; - record += customer.getLocation().getZipcode() + ","; - record += customer.getLocation().getCity() + ","; - record += customer.getLocation().getState() + "\n"; - - outputStream.write(record.getBytes()); - } - - outputStream.close(); - } - - private void writeStores(Collection<Store> stores) throws Exception - { - File outputFile = new File(outputDir.toString() + File.separator + "stores.txt"); - System.out.println(outputFile.toString()); - OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile)); - - for(Store store : stores) - { - String record = store.getId() + ","; - record += store.getLocation().getZipcode() + ","; - record += store.getLocation().getCity() + ","; - record += store.getLocation().getState() + "\n"; - - outputStream.write(record.getBytes()); - } - - outputStream.close(); - } - - private void writeProducts(Collection<ProductCategory> productCategories) throws Exception - { - File outputFile = new File(outputDir.toString() + File.separator + "products.txt"); - System.out.println(outputFile.toString()); - OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile)); - - for(ProductCategory category : productCategories) - { - - for(Product product : category.getProducts()) - { - String record = category.getCategoryLabel() + ","; - record += product.toString() + "\n"; - - outputStream.write(record.getBytes()); - } - } - - outputStream.close(); - } - - private void writePurchasingProfiles(List<ProductCategory> productCategories, List<PurchasingModel> profiles) throws Exception - { - File outputFile = new File(outputDir.toString() + File.separator + "purchasing_profiles.txt"); - System.out.println(outputFile.toString()); - OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile)); - - for(ProductCategory category : productCategories) - { - int i = 0; - for(PurchasingModel model : profiles) - { - Object productModel = model.getProfile(category.getCategoryLabel()); - String record = productModel.toString(); - - outputStream.write(record.getBytes()); - - i += 1; - } - } - - outputStream.close(); - } - - public Simulation buildSimulation(InputData inputData) - { - return new Simulation(inputData, nStores, nCustomers, nPurchasingModels, simulationTime, seed); - } - - private void run(InputData inputData) throws Exception - { - Simulation simulation = buildSimulation(inputData); - - simulation.simulate(); - - writeStores(simulation.getStores()); - writeCustomers(simulation.getCustomers()); - writeProducts(simulation.getProductCategories()); - writePurchasingProfiles(simulation.getProductCategories(), simulation.getPurchasingProfiles()); - writeTransactions(simulation.getTransactions()); - } - public void run(String[] args) throws Exception - { - parseArgs(args); - - InputData inputData = (new DataLoader()).loadData(); - - run(inputData); - } - - public static void main(String[] args) throws Exception - { - Driver driver = new Driver(); - driver.run(args); - } - - public Double getSimulationLength() - { - return simulationTime; - } - - public int getNCustomers() - { - return nCustomers; - } - - public long getSeed() - { - return seed; - } - - public int getNStores() - { - return nStores; - } - - public File getOutputDir() - { - return outputDir; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/cli/Simulation.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/cli/Simulation.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/cli/Simulation.java deleted file mode 100644 index 4b9b500..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/cli/Simulation.java +++ /dev/null @@ -1,188 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.cli; - -import java.util.Collections; -import java.util.List; -import java.util.Vector; - -import org.apache.bigtop.bigpetstore.datagenerator.Constants; -import org.apache.bigtop.bigpetstore.datagenerator.CustomerGenerator; -import org.apache.bigtop.bigpetstore.datagenerator.ProductGenerator; -import org.apache.bigtop.bigpetstore.datagenerator.PurchasingModelGenerator; -import org.apache.bigtop.bigpetstore.datagenerator.StoreGenerator; -import org.apache.bigtop.bigpetstore.datagenerator.TransactionGenerator; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Customer; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Store; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Transaction; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.InputData; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.ProductCategory; -import org.apache.bigtop.bigpetstore.datagenerator.framework.SeedFactory; -import org.apache.bigtop.bigpetstore.datagenerator.framework.samplers.RouletteWheelSampler; -import org.apache.bigtop.bigpetstore.datagenerator.framework.samplers.Sampler; -import org.apache.bigtop.bigpetstore.datagenerator.generators.purchase.PurchasingModel; - -import com.google.common.collect.Lists; - -public class Simulation -{ - InputData inputData; - SeedFactory seedFactory; - int nStores; - int nCustomers; - int nPurchasingModels; - double simulationTime; - - List<Store> stores; - List<Customer> customers; - Sampler<PurchasingModel> purchasingModelSampler; - List<PurchasingModel> purchasingProfiles; - List<Transaction> transactions; - List<ProductCategory> productCategories; - - public Simulation(InputData inputData, int nStores, int nCustomers, int nPurchasingModels, double simulationTime, long seed) - { - this.inputData = inputData; - this.nStores = nStores; - this.nCustomers = nCustomers; - this.nPurchasingModels = nPurchasingModels; - this.simulationTime = simulationTime; - seedFactory = new SeedFactory(seed); - } - - public void generateStores() throws Exception - { - System.out.println("Generating stores"); - StoreGenerator storeGenerator = new StoreGenerator(inputData, seedFactory); - - stores = new Vector<Store>(); - for(int i = 0; i < nStores; i++) - { - Store store = storeGenerator.generate(); - stores.add(store); - } - - stores = Collections.unmodifiableList(stores); - - System.out.println("Generated " + stores.size() + " stores"); - } - - public void generateCustomers() throws Exception - { - System.out.println("Generating customers"); - CustomerGenerator generator = new CustomerGenerator(inputData, stores, seedFactory); - - customers = new Vector<Customer>(); - for(int i = 0; i < nCustomers; i++) - { - Customer customer = generator.generate(); - customers.add(customer); - } - - customers = Collections.unmodifiableList(customers); - - System.out.println("Generated " + customers.size() + " customers"); - } - - public void generateProducts() - { - System.out.println("Generating products"); - ProductGenerator generator = new ProductGenerator(Constants.PRODUCTS_COLLECTION); - productCategories = generator.generate(); - } - - public void generatePurchasingProfiles() throws Exception - { - System.out.println("Generating purchasing profiles"); - PurchasingModelGenerator generator = new PurchasingModelGenerator(productCategories, seedFactory); - - purchasingProfiles = new Vector<PurchasingModel>(); - for(int i = 0; i < nPurchasingModels; i++) - { - PurchasingModel profile = generator.generate(); - purchasingProfiles.add(profile); - } - - System.out.println("Generated " + purchasingProfiles.size() + " purchasing profiles"); - - purchasingModelSampler = RouletteWheelSampler.createUniform(purchasingProfiles, seedFactory); - } - - public void generateTransactions() throws Exception - { - System.out.println("Generating transactions"); - transactions = Lists.newArrayList(); - - for(int i = 0; i < nCustomers; i++) - { - Customer customer = customers.get(i); - PurchasingModel profile = purchasingModelSampler.sample(); - - TransactionGenerator generator = new TransactionGenerator(customer, - profile, productCategories, seedFactory); - - while(true) - { - Transaction transaction = generator.generate(); - - if(transaction.getDateTime() > simulationTime) - break; - transactions.add(transaction); - } - } - - System.out.println("Generated " + transactions.size() + " transactions"); - } - - public void simulate() throws Exception - { - generateStores(); - generateCustomers(); - generateProducts(); - generatePurchasingProfiles(); - generateTransactions(); - } - - public List<Store> getStores() - { - return stores; - } - - public List<Customer> getCustomers() - { - return customers; - } - - public List<Transaction> getTransactions() - { - return transactions; - } - - public InputData getInputData() - { - return inputData; - } - - public List<ProductCategory> getProductCategories() - { - return this.productCategories; - } - - public List<PurchasingModel> getPurchasingProfiles() - { - return this.purchasingProfiles; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Customer.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Customer.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Customer.java deleted file mode 100644 index 704c965..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Customer.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels; - -import java.io.Serializable; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.ZipcodeRecord; -import org.apache.commons.lang3.tuple.Pair; - -public class Customer implements Serializable -{ - private static final long serialVersionUID = 5739806281335931258L; - - int id; - Pair<String, String> name; - ZipcodeRecord location; - Store store; - - public Customer(int id, Pair<String, String> name, Store store, ZipcodeRecord location) - { - this.id = id; - this.name = name; - this.location = location; - this.store = store; - } - - public int getId() - { - return id; - } - - public Pair<String, String> getName() - { - return name; - } - - public ZipcodeRecord getLocation() - { - return location; - } - - public Store getStore() - { - return store; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/PetSpecies.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/PetSpecies.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/PetSpecies.java deleted file mode 100644 index d4bab79..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/PetSpecies.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels; - -public enum PetSpecies -{ - DOG, - CAT; -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Product.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Product.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Product.java deleted file mode 100644 index 1d4e074..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Product.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels; - -import java.io.Serializable; -import java.util.Map; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; - -public class Product implements Serializable -{ - private static final long serialVersionUID = 4519472063058037956L; - - ImmutableMap<String, Object> fields; - - public Product(Map<String, Object> fields) - { - this.fields = ImmutableMap.copyOf(fields); - } - - public ImmutableSet<String> getFieldNames() - { - return fields.keySet(); - } - - public Object getFieldValue(String fieldName) - { - return fields.get(fieldName); - } - - public String getFieldValueAsString(String fieldName) - { - return fields.get(fieldName).toString(); - } - - public Double getFieldValueAsDouble(String fieldName) - { - Object value = getFieldValue(fieldName); - try - { - Double doubleValue = (Double) value; - return doubleValue; - } - catch(ClassCastException e) - { - return null; - } - } - - public Long getFieldValueAsLong(String fieldName) - { - Object value = getFieldValue(fieldName); - try - { - Long longValue = (Long) value; - return longValue; - } - catch(ClassCastException e) - { - try - { - Integer intValue = (Integer) value; - return new Long(intValue); - } - catch(ClassCastException f) - { - return null; - } - } - } - - public String toString() - { - String str = ""; - for(Map.Entry<String, Object> entry : fields.entrySet()) - { - str += entry.getKey() + "=" + entry.getValue() + ";"; - } - - return str; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Store.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Store.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Store.java deleted file mode 100644 index 50e333a..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Store.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels; - -import java.io.Serializable; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.ZipcodeRecord; - -public class Store implements Serializable -{ - private static final long serialVersionUID = 2347066623022747969L; - - int id; - String name; - ZipcodeRecord location; - - public Store(int id, String name, ZipcodeRecord location) - { - this.id = id; - this.name = name; - this.location = location; - } - - public int getId() - { - return id; - } - - public String getName() - { - return name; - } - - public ZipcodeRecord getLocation() - { - return location; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Transaction.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Transaction.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Transaction.java deleted file mode 100644 index 6a78e44..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/Transaction.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels; - -import java.io.Serializable; -import java.util.List; - -import com.google.common.collect.ImmutableList; - -public class Transaction implements Serializable -{ - private static final long serialVersionUID = 103133601154354349L; - - final int id; - final Customer customer; - final Store store; - final Double dateTime; - final ImmutableList<Product> products; - - public Transaction(int id, Customer customer, Store store, Double dateTime, List<Product> products) - { - this.id = id; - this.customer = customer; - this.store = store; - this.dateTime = dateTime; - this.products = ImmutableList.copyOf(products); - } - - public int getId() - { - return id; - } - - public Customer getCustomer() - { - return customer; - } - - public Store getStore() - { - return store; - } - - public Double getDateTime() - { - return dateTime; - } - - public ImmutableList<Product> getProducts() - { - return products; - } - - -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/InputData.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/InputData.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/InputData.java deleted file mode 100644 index 4fad219..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/InputData.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs; - -import java.io.Serializable; -import java.util.Collections; -import java.util.List; - -public class InputData implements Serializable -{ - private static final long serialVersionUID = 9078989799806707788L; - - List<ZipcodeRecord> zipcodeTable; - Names names; - - public InputData(List<ZipcodeRecord> zipcodeTable, - Names names) - { - this.zipcodeTable = Collections.unmodifiableList(zipcodeTable); - this.names = names; - } - - public List<ZipcodeRecord> getZipcodeTable() - { - return zipcodeTable; - } - - public Names getNames() - { - return names; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/Names.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/Names.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/Names.java deleted file mode 100644 index 9402e02..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/Names.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs; - -import java.io.Serializable; -import java.util.Map; - -import com.google.common.collect.ImmutableMap; - -public class Names implements Serializable -{ - private static final long serialVersionUID = 2731634747628534453L; - - final ImmutableMap<String, Double> firstNames; - final ImmutableMap<String, Double> lastNames; - - public Names(Map<String, Double> firstNames, - Map<String, Double> lastNames) - { - this.firstNames = ImmutableMap.copyOf(firstNames); - this.lastNames = ImmutableMap.copyOf(lastNames); - } - - public ImmutableMap<String, Double> getFirstNames() - { - return firstNames; - } - - public ImmutableMap<String, Double> getLastNames() - { - return lastNames; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/ProductCategory.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/ProductCategory.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/ProductCategory.java deleted file mode 100644 index 6fb0572..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/ProductCategory.java +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs; - -import java.io.Serializable; -import java.util.List; -import java.util.Set; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.PetSpecies; -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.Product; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; - -public class ProductCategory implements Serializable -{ - private static final long serialVersionUID = -7638076590334497836L; - - String categoryLabel; - ImmutableSet<PetSpecies> applicableSpecies; - ImmutableSet<String> fieldNames; - boolean triggerTransaction; - double dailyUsageRate; - double amountUsedPerPetAverage; - double amountUsedPerPetVariance; - double triggerTransactionRate; - double triggerPurchaseRate; - ImmutableList<Product> products; - - public ProductCategory(String categoryLabel, Set<PetSpecies> species, Set<String> fieldNames, - boolean triggerTransaction, double dailyUsageRate, double amountUsedPerPetAverage, - double amountUsedPerPetVariance, double triggerTransactionRate, - double triggerPurchaseRate, List<Product> products) - { - this.categoryLabel = categoryLabel; - this.applicableSpecies = ImmutableSet.copyOf(species); - this.fieldNames = ImmutableSet.copyOf(fieldNames); - this.triggerTransaction = triggerTransaction; - this.dailyUsageRate = dailyUsageRate; - this.amountUsedPerPetAverage = amountUsedPerPetAverage; - this.amountUsedPerPetVariance = amountUsedPerPetVariance; - this.triggerTransactionRate = triggerTransactionRate; - this.triggerPurchaseRate = triggerPurchaseRate; - this.products = ImmutableList.copyOf(products); - } - - public String getCategoryLabel() - { - return categoryLabel; - } - - public ImmutableSet<PetSpecies> getApplicableSpecies() - { - return applicableSpecies; - } - - public ImmutableSet<String> getFieldNames() - { - return fieldNames; - } - public Boolean getTriggerTransaction() - { - return triggerTransaction; - } - - public Double getDailyUsageRate() - { - return dailyUsageRate; - } - - public Double getBaseAmountUsedAverage() - { - return amountUsedPerPetAverage; - } - - public Double getBaseAmountUsedVariance() - { - return amountUsedPerPetVariance; - } - - public Double getTransactionTriggerRate() - { - return triggerTransactionRate; - } - - public Double getPurchaseTriggerRate() - { - return triggerPurchaseRate; - } - - public ImmutableList<Product> getProducts() - { - return products; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/ZipcodeRecord.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/ZipcodeRecord.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/ZipcodeRecord.java deleted file mode 100644 index ef54712..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datamodels/inputs/ZipcodeRecord.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs; - -import java.io.Serializable; - -import org.apache.commons.lang3.tuple.Pair; - -public class ZipcodeRecord implements Serializable -{ - private static final long serialVersionUID = 1769986686070108470L; - - final String zipcode; - final Pair<Double, Double> coordinates; - final String city; - final String state; - final double medianHouseholdIncome; - final long population; - - public ZipcodeRecord(String zipcode, Pair<Double, Double> coordinates, - String city, String state, double medianHouseholdIncome, long population) - { - this.city = city; - this.state = state; - this.zipcode = zipcode; - this.coordinates = coordinates; - this.medianHouseholdIncome = medianHouseholdIncome; - this.population = population; - } - - public String getZipcode() - { - return zipcode; - } - - public Pair<Double, Double> getCoordinates() - { - return coordinates; - } - - public double getMedianHouseholdIncome() - { - return medianHouseholdIncome; - } - - public long getPopulation() - { - return population; - } - - public double distance(ZipcodeRecord other) - { - if(other.getZipcode().equals(zipcode)) - return 0.0; - - Pair<Double, Double> otherCoords = other.getCoordinates(); - - double dist = Math.sin(Math.toRadians(coordinates.getLeft())) * - Math.sin(Math.toRadians(otherCoords.getLeft())) + - Math.cos(Math.toRadians(coordinates.getLeft())) * - Math.cos(Math.toRadians(otherCoords.getLeft())) * - Math.cos(Math.toRadians(coordinates.getRight() - otherCoords.getRight())); - dist = Math.toDegrees(Math.acos(dist)) * 69.09; - - return dist; - } - - public String getCity() - { - return city; - } - - public String getState() - { - return state; - } -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datareaders/NameReader.java ---------------------------------------------------------------------- diff --git a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datareaders/NameReader.java b/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datareaders/NameReader.java deleted file mode 100644 index 5a847ea..0000000 --- a/bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/bigpetstore/datagenerator/datareaders/NameReader.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop.bigpetstore.datagenerator.datareaders; - -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.util.Map; -import java.util.Scanner; - -import org.apache.bigtop.bigpetstore.datagenerator.datamodels.inputs.Names; - -import com.google.common.collect.Maps; - -public class NameReader -{ - InputStream path; - - public NameReader(InputStream path) - { - this.path = path; - } - - public Names readData() throws FileNotFoundException - { - Scanner scanner = new Scanner(path); - - Map<String, Double> firstNames = Maps.newHashMap(); - Map<String, Double> lastNames = Maps.newHashMap(); - - while(scanner.hasNextLine()) - { - String line = scanner.nextLine(); - String[] cols = line.trim().split(","); - - String name = cols[0]; - double weight = Double.parseDouble(cols[5]); - - if(cols[4].equals("1")) - firstNames.put(name, weight); - if(cols[3].equals("1")) - lastNames.put(name, weight); - } - - scanner.close(); - - return new Names(firstNames, lastNames); - - } -}
