/** * Initiates the assembly of a data graph based on the given results list. * * @param results the results list * @see DataGraphAssembler.getDataGraph() */ @Override public void assemble(List<PropertyPair> results) { long before = System.currentTimeMillis(); DataGraph dataGraph = initRoot(results); CoreNode rootNode = (CoreNode) dataGraph.getRootObject(); // singular reference props for (PropertyPair pair : results) { if (pair.getProp().isMany() || pair.getProp().getType().isDataType()) continue; List<PropertyPair> childKeyProps = this.getChildKeyPairs(pair); assemble( (PlasmaType) pair.getProp().getType(), (PlasmaDataObject) this.root, pair.getProp(), childKeyProps, 1); } // multi reference props (not found in results) Set<Property> props = this.collector.getProperties(this.rootType); for (Property p : props) { PlasmaProperty prop = (PlasmaProperty) p; if (prop.isMany() && !prop.getType().isDataType()) { List<PropertyPair> childKeyProps = this.getChildKeyPairs(root, prop); assemble((PlasmaType) prop.getType(), (PlasmaDataObject) this.root, prop, childKeyProps, 1); } } long after = System.currentTimeMillis(); rootNode .getValueObject() .put(CloudGraphConstants.GRAPH_ASSEMBLY_TIME, Long.valueOf(after - before)); GraphMetricVisitor visitor = new GraphMetricVisitor(); this.root.accept(visitor); rootNode .getValueObject() .put(CloudGraphConstants.GRAPH_NODE_COUNT, Long.valueOf(visitor.getCount())); rootNode .getValueObject() .put(CloudGraphConstants.GRAPH_DEPTH, Long.valueOf(visitor.getDepth())); rootNode .getValueObject() .put(CloudGraphConstants.GRAPH_THREAD_COUNT, Long.valueOf(visitor.getThreadCount())); }
/** * Creates and persists a FICR Coverage Extension Request Pharmacy message * * @throws IOException */ public void testCreate() throws IOException { DataGraph dataGraph = PlasmaDataFactory.INSTANCE.createDataGraph(); dataGraph.getChangeSummary().beginLogging(); // log changes from this point Type rootType = PlasmaTypeHelper.INSTANCE.getType(PaymentRequest.class); PaymentRequest paymentRequest = (PaymentRequest) dataGraph.createRootObject(rootType); paymentRequest.setAmt(this.amount); paymentRequest.setClassCode("XACT"); paymentRequest.setId(new String[] {String.valueOf(rand.nextLong())}); paymentRequest.setMoodCode("PRP"); PaymentRequestAttention performer = paymentRequest.createPrimaryPerformer(); performer.setTypeCode("PPRF"); ContactParty contactParty = performer.createContactParty(); contactParty.setClassCode("CON"); contactParty.setCode("PAYOR"); contactParty.setId(String.valueOf(System.currentTimeMillis())); ContactPerson contactPerson = contactParty.createContactPerson(); contactPerson.setName("Albert Dunhurst"); contactPerson.setClassCode("PSN"); contactPerson.setDeterminerCode("INSTANCE"); contactPerson.setTelecom("(540)364-2293"); PaymentRequestReason paymentReason = paymentRequest.createReasonOf(); paymentReason.setTypeCode("RSON"); InvoiceElementGroup invoiceElementGroup = paymentReason.createInvoiceElementGroup(); invoiceElementGroup.setClassCode("INME"); invoiceElementGroup.setMoodCode("PRP"); invoiceElementGroup.setConfidentialityCode("N"); invoiceElementGroup.setNetAmt(this.amount); InvoiceElementGroupAttachment groupAttachment = invoiceElementGroup.createPertinentInformation1(); groupAttachment.setTypeCode("PERT"); HealthDocumentAttachment attachment = groupAttachment.createHealthDocumentAttachment(); attachment.setClassCode("OBS"); attachment.setMoodCode("EVN"); attachment.setId(new String[] {String.valueOf(System.currentTimeMillis())}); // attachment.setCode(value) attachment.setValue("<Content>attachment content</<Content>"); // InvoiceElementReason invoiceReason = invoiceElementGroup.createReasonOf(); log.info(this.serializeGraph(paymentRequest.getDataGraph())); this.service.commit(paymentRequest.getDataGraph(), USERNAME); }