use of org.apache.asterix.common.annotations.TypeDataGen in project asterixdb by apache.
the class AdmDataGen method dataGen.
public void dataGen() throws Exception {
for (Map.Entry<TypeSignature, IAType> me : typeMap.entrySet()) {
TypeSignature tn = me.getKey();
TypeDataGen tdg = typeAnnotMap.get(tn);
if (tdg.isDataGen()) {
IAType t = me.getValue();
if (t.getTypeTag() != ATypeTag.OBJECT) {
throw new NotImplementedException();
}
ARecordType rt = (ARecordType) t;
RecordDataGenAnnotation dga = firstDataGenAnnotation(rt);
if (dga == null) {
throw new Exception("No data generator annotations for type " + tn);
}
File outFile = new File(outputDir + File.separator + tdg.getOutputFileName());
PrintStream outStream = new PrintStream(new BufferedOutputStream(new FileOutputStream(outFile)));
RecordGenerator rg = new RecordGenerator(rt, dga, "\n");
rg.init(outStream, dgCtx);
for (long i = 0; i < tdg.getNumValues(); i++) {
rg.generate();
}
outStream.close();
}
}
}
use of org.apache.asterix.common.annotations.TypeDataGen in project asterixdb by apache.
the class ADGenDmlTranslator method translate.
public void translate() throws AsterixException, MetadataException, AlgebricksException {
String defaultDataverse = getDefaultDataverse();
types = new HashMap<TypeSignature, IAType>();
typeDataGenMap = new HashMap<TypeSignature, TypeDataGen>();
for (Statement stmt : aqlStatements) {
if (stmt.getKind() == Statement.Kind.TYPE_DECL) {
TypeDecl td = (TypeDecl) stmt;
String typeDataverse = td.getDataverseName() == null ? defaultDataverse : td.getDataverseName().getValue();
Map<TypeSignature, IAType> typeInStmt = TypeTranslator.computeTypes(mdTxnCtx, td.getTypeDef(), td.getIdent().getValue(), typeDataverse, types);
types.putAll(typeInStmt);
TypeSignature signature = new TypeSignature(typeDataverse, td.getIdent().getValue());
TypeDataGen tdg = td.getDatagenAnnotation();
if (tdg != null) {
typeDataGenMap.put(signature, tdg);
}
}
}
}
Aggregations