Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * (C) Copyright 2013 DataGenerator Contributors.
   *
   * Licensed 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.finra.datagenerator.generation;
 
 import java.util.List;
 import java.util.Map;
 
 /*
  * Generates the default combinatorial dataset. This is a dataset where all
  * variables are set to their default positive values, and all group requirements
  * are satisfied.
  */
 
     private static final Logger log = Logger.getLogger(DefaultCombiDataSetGenerator.class);
 
     private static final DefaultCombiDataSetGenerator instance = new DefaultCombiDataSetGenerator();
     private static ConcurrentMap<DataSpecDataSetdataSetCache = new MapMaker().makeMap();
 
     private DefaultCombiDataSetGenerator() {
     }
 
     public static DefaultCombiDataSetGenerator getInstance() {
         return ;
     }

    

Parameters:
dataSpec
Returns:
 
     @Override
     public List<DataSetgenerateDataSets(DataSpec dataSpec) {
         // only recompute the dataset if it's not already in the cache
         synchronized () {
             if (!.containsKey(dataSpec)) {
                 .putIfAbsent(dataSpecinternalGenerateDataSet(dataSpec));
             }
         }
 
         // return a copy of the data set from the cache, wrapped in a List<>
         List<DataSetret = new LinkedList<>();
         ret.add(new DataSet(.get(dataSpec))); // defensive copy
         return ret;
     }

    
Makes a new DataSet and populates it via recursiveDataGeneration(), beginning with the root group.

Parameters:
dataSpec
Returns:
 
     private DataSet internalGenerateDataSet(DataSpec dataSpec) {
         DataSet dataSet = new DataSet();
         recursiveDataGeneration(dataSpecdataSetdataSet.getGroup(.));
         return dataSet;
     }

    
Fills out default data recursively by groups. Enforces group hierarchy and uniqueness requirements specified in the Data Spec.

Parameters:
dataSet
 
     private void recursiveDataGeneration(DataSpec dataSpecDataSet dataSetDataSetGroup parentGroup) {
         for(GroupSpec groupSpec : dataSpec.getAllGroupSpecs()){
             // for each group whose parent is this group type
             if (groupSpec.getParentGroupType().equals(parentGroup.getType())) {
                 // Figure out how many groups ought to be created per the dataspec. Recursively create that many groups.
                 int n = groupSpec.getNumPerParent();
                 for(int i = 0; i<n; ++i){
                     DataSetGroup createdGroup = dataSet.createGroup(groupSpecparentGroup);
                     recursiveDataGeneration(dataSpecdataSetcreatedGroup);
                     // if certain variables are required to be unique, overwrite the default values with the next unique combo
                     if (groupSpec.requiresUniqueElems()) {
                         Map<StringStringcombo = groupSpec.getUniqueCombo(i);
                         for(Entry<StringStringelem : combo.entrySet()){
                            createdGroup.get(elem.getKey()).setProperty(.elem.getValue());
                        }
                    }
                }
            }
        }
    }
New to GrepCode? Check out our FAQ X