List of usage examples for com.fasterxml.jackson.core JsonParser getIntValue
public abstract int getIntValue() throws IOException, JsonParseException;
From source file:com.google.openrtb.json.OpenRtbJsonReader.java
protected void readDealField(JsonParser par, Deal.Builder deal, String fieldName) throws IOException { switch (fieldName) { case "id": deal.setId(par.getText());// ww w .ja va 2 s . c o m break; case "bidfloor": deal.setBidfloor(par.getValueAsDouble()); break; case "bidfloorcur": deal.setBidfloorcur(par.getText()); break; case "wseat": for (startArray(par); endArray(par); par.nextToken()) { deal.addWseat(par.getText()); } break; case "wadomain": for (startArray(par); endArray(par); par.nextToken()) { deal.addWadomain(par.getText()); } break; case "at": { AuctionType value = AuctionType.valueOf(par.getIntValue()); if (checkEnum(value)) { deal.setAt(value); } } break; default: readOther(deal, par, fieldName); } }
From source file:com.google.openrtb.json.OpenRtbJsonReader.java
protected void readBidRequestField(JsonParser par, BidRequest.Builder req, String fieldName) throws IOException { switch (fieldName) { case "id": req.setId(par.getText());/*from w ww . j a v a2 s. c om*/ break; case "imp": for (startArray(par); endArray(par); par.nextToken()) { req.addImp(readImp(par)); } break; case "site": req.setSite(readSite(par)); break; case "app": req.setApp(readApp(par)); break; case "device": req.setDevice(readDevice(par)); break; case "user": req.setUser(readUser(par)); break; case "test": req.setTest(par.getValueAsBoolean()); break; case "at": { AuctionType value = AuctionType.valueOf(par.getIntValue()); if (checkEnum(value)) { req.setAt(value); } } break; case "tmax": req.setTmax(par.getIntValue()); break; case "wseat": for (startArray(par); endArray(par); par.nextToken()) { req.addWseat(par.getText()); } break; case "allimps": req.setAllimps(par.getValueAsBoolean()); break; case "cur": for (startArray(par); endArray(par); par.nextToken()) { req.addCur(par.getText()); } break; case "bcat": for (startArray(par); endArray(par); par.nextToken()) { String cat = par.getText(); if (checkContentCategory(cat)) { req.addBcat(cat); } } break; case "badv": for (startArray(par); endArray(par); par.nextToken()) { req.addBadv(par.getText()); } break; case "regs": req.setRegs(readRegs(par)); break; case "bapp": for (startArray(par); endArray(par); par.nextToken()) { req.addBapp(par.getText()); } break; default: readOther(req, par, fieldName); } }
From source file:com.google.openrtb.json.OpenRtbJsonReader.java
protected void readImpField(JsonParser par, Imp.Builder imp, String fieldName) throws IOException { switch (fieldName) { case "id": imp.setId(par.getText());/*from w w w . j a v a 2 s . c om*/ break; case "banner": imp.setBanner(readBanner(par)); break; case "video": imp.setVideo(readVideo(par)); break; case "audio": imp.setAudio(readAudio(par)); break; case "native": imp.setNative(readNative(par)); break; case "displaymanager": imp.setDisplaymanager(par.getText()); break; case "displaymanagerver": imp.setDisplaymanagerver(par.getText()); break; case "instl": imp.setInstl(par.getValueAsBoolean()); break; case "tagid": imp.setTagid(par.getText()); break; case "bidfloor": imp.setBidfloor(par.getValueAsDouble()); break; case "bidfloorcur": imp.setBidfloorcur(par.getText()); break; case "secure": imp.setSecure(par.getValueAsBoolean()); break; case "iframebuster": for (startArray(par); endArray(par); par.nextToken()) { imp.addIframebuster(par.getText()); } break; case "pmp": imp.setPmp(readPmp(par)); break; case "clickbrowser": imp.setClickbrowser(par.getValueAsBoolean()); break; case "exp": imp.setExp(par.getIntValue()); break; default: readOther(imp, par, fieldName); } }
From source file:com.google.openrtb.json.OpenRtbJsonReader.java
protected void readBidField(JsonParser par, Bid.Builder bid, String fieldName) throws IOException { switch (fieldName) { case "id": bid.setId(par.getText());//w w w .j a v a 2s . com break; case "impid": bid.setImpid(par.getText()); break; case "price": bid.setPrice(par.getValueAsDouble()); break; case "adid": bid.setAdid(par.getText()); break; case "nurl": bid.setNurl(par.getText()); break; case "adm": if (par.getCurrentToken() == JsonToken.VALUE_STRING) { String valueString = par.getText(); if (valueString.startsWith("{")) { bid.setAdmNative(factory().newNativeReader().readNativeResponse(valueString)); } else { bid.setAdm(valueString); } } else { // Object bid.setAdmNative(factory().newNativeReader().readNativeResponse(par)); } break; case "adomain": for (startArray(par); endArray(par); par.nextToken()) { bid.addAdomain(par.getText()); } break; case "bundle": bid.setBundle(par.getText()); break; case "iurl": bid.setIurl(par.getText()); break; case "cid": bid.setCid(par.getText()); break; case "crid": bid.setCrid(par.getText()); break; case "cat": for (startArray(par); endArray(par); par.nextToken()) { String cat = par.getText(); if (checkContentCategory(cat)) { bid.addCat(cat); } } break; case "attr": for (startArray(par); endArray(par); par.nextToken()) { CreativeAttribute value = CreativeAttribute.valueOf(par.getIntValue()); if (checkEnum(value)) { bid.addAttr(value); } } break; case "dealid": bid.setDealid(par.getText()); break; case "w": bid.setW(par.getIntValue()); break; case "h": bid.setH(par.getIntValue()); break; case "api": { APIFramework value = APIFramework.valueOf(par.getIntValue()); if (checkEnum(value)) { bid.setApi(value); } } break; case "protocol": { Protocol value = Protocol.valueOf(par.getIntValue()); if (checkEnum(value)) { bid.setProtocol(value); } } break; case "qagmediarating": { QAGMediaRating value = QAGMediaRating.valueOf(par.getIntValue()); if (checkEnum(value)) { bid.setQagmediarating(value); } } break; case "exp": bid.setExp(par.getIntValue()); break; default: readOther(bid, par, fieldName); } }
From source file:org.hippoecm.frontend.service.restproxy.custom.json.deserializers.AnnotationJsonDeserializer.java
protected Integer[] deserializeIntegerArrayAnnotationAttribute(JsonParser jsonParser) throws JsonParseException, IOException { List<Integer> integerArray = new ArrayList<Integer>(); while (jsonParser.nextToken() != JsonToken.END_ARRAY) { integerArray.add(jsonParser.getIntValue()); }// www .ja va 2 s .c o m return integerArray.toArray(new Integer[integerArray.size()]); }
From source file:org.jbpm.designer.bpmn2.impl.Bpmn2JsonUnmarshaller.java
public BaseElement unmarshallItem(JsonParser parser, String preProcessingData) throws JsonParseException, IOException { String resourceId = null;//from w w w . jav a 2s . c o m Map<String, String> properties = null; String stencil = null; List<BaseElement> childElements = new ArrayList<BaseElement>(); List<String> outgoing = new ArrayList<String>(); while (parser.nextToken() != JsonToken.END_OBJECT) { String fieldname = parser.getCurrentName(); parser.nextToken(); if ("resourceId".equals(fieldname)) { resourceId = parser.getText(); } else if ("properties".equals(fieldname)) { properties = unmarshallProperties(parser); } else if ("stencil".equals(fieldname)) { // "stencil":{"id":"Task"}, parser.nextToken(); parser.nextToken(); stencil = parser.getText(); parser.nextToken(); } else if ("childShapes".equals(fieldname)) { while (parser.nextToken() != JsonToken.END_ARRAY) { // open the // object // the childShapes element is a json array. We opened the // array. childElements.add(unmarshallItem(parser, preProcessingData)); } } else if ("bounds".equals(fieldname)) { // bounds: {"lowerRight":{"x":484.0,"y":198.0},"upperLeft":{"x":454.0,"y":168.0}} parser.nextToken(); parser.nextToken(); parser.nextToken(); parser.nextToken(); Integer x2 = parser.getIntValue(); parser.nextToken(); parser.nextToken(); Integer y2 = parser.getIntValue(); parser.nextToken(); parser.nextToken(); parser.nextToken(); parser.nextToken(); parser.nextToken(); Integer x1 = parser.getIntValue(); parser.nextToken(); parser.nextToken(); Integer y1 = parser.getIntValue(); parser.nextToken(); parser.nextToken(); // by default the org.eclipse.dd.dc bounds says // its features are set if they are non-zero // we need to change that so that nodes placed on the canvas borders // where x or y can be zero still are treated as set features // otherwise they will not end up as attributes in the produced xml BoundsImpl b = new BoundsImpl() { @Override public boolean eIsSet(int featureID) { switch (featureID) { case 0: if (this.height >= 0.0F) { return true; } return false; case 1: if (this.width >= 0.0F) { return true; } return false; case 2: if (this.x >= 0.0F) { return true; } return false; case 3: if (this.y >= 0.0F) { return true; } return false; default: return super.eIsSet(featureID); } } }; b.setX(x1); b.setY(y1); b.setWidth(x2 - x1); b.setHeight(y2 - y1); this._bounds.put(resourceId, b); } else if ("dockers".equals(fieldname)) { // "dockers":[{"x":50,"y":40},{"x":353.5,"y":115},{"x":353.5,"y":152},{"x":50,"y":40}], List<Point> dockers = new ArrayList<Point>(); JsonToken nextToken = parser.nextToken(); boolean end = JsonToken.END_ARRAY.equals(nextToken); while (!end) { nextToken = parser.nextToken(); nextToken = parser.nextToken(); Integer x = parser.getIntValue(); parser.nextToken(); parser.nextToken(); Integer y = parser.getIntValue(); Point point = DcFactory.eINSTANCE.createPoint(); point.setX(x); point.setY(y); dockers.add(point); parser.nextToken(); nextToken = parser.nextToken(); end = JsonToken.END_ARRAY.equals(nextToken); } this._dockers.put(resourceId, dockers); } else if ("outgoing".equals(fieldname)) { while (parser.nextToken() != JsonToken.END_ARRAY) { // {resourceId: oryx_1AAA8C9A-39A5-42FC-8ED1-507A7F3728EA} parser.nextToken(); parser.nextToken(); outgoing.add(parser.getText()); parser.nextToken(); } // pass on the array parser.skipChildren(); } else if ("target".equals(fieldname)) { // we already collected that info with the outgoing field. parser.skipChildren(); // "target": { // "resourceId": "oryx_A75E7546-DF71-48EA-84D3-2A8FD4A47568" // } // add to the map: // parser.nextToken(); // resourceId: // parser.nextToken(); // the value we want to save // targetId = parser.getText(); // parser.nextToken(); // }, closing the object } } properties.put("resourceId", resourceId); boolean customElement = isCustomElement(properties.get("tasktype"), preProcessingData); BaseElement baseElt = this.createBaseElement(stencil, properties.get("tasktype"), customElement); // register the sequence flow targets. if (baseElt instanceof SequenceFlow) { _sequenceFlowTargets.addAll(outgoing); } _outgoingFlows.put(baseElt, outgoing); _objMap.put(baseElt, resourceId); // keep the object around to do connections _idMap.put(resourceId, baseElt); // baseElt.setId(resourceId); commented out as bpmn2 seems to create // duplicate ids right now. applyProperties(baseElt, properties, preProcessingData); if (baseElt instanceof Definitions) { Process rootLevelProcess = null; if (childElements == null || childElements.size() < 1) { if (rootLevelProcess == null) { rootLevelProcess = Bpmn2Factory.eINSTANCE.createProcess(); // set the properties and item definitions first if (properties.get("vardefs") != null && properties.get("vardefs").length() > 0) { String[] vardefs = properties.get("vardefs").split(",\\s*"); for (String vardef : vardefs) { Property prop = Bpmn2Factory.eINSTANCE.createProperty(); ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition(); // check if we define a structure ref in the definition if (vardef.contains(":")) { String[] vardefParts = vardef.split(":\\s*"); prop.setId(vardefParts[0]); itemdef.setId("_" + prop.getId() + "Item"); boolean haveKPI = false; String kpiValue = ""; if (vardefParts.length == 3) { itemdef.setStructureRef(vardefParts[1]); if (vardefParts[2].equals("true")) { haveKPI = true; kpiValue = vardefParts[2]; } } if (vardefParts.length == 2) { if (vardefParts[1].equals("true") || vardefParts[1].equals("false")) { if (vardefParts[1].equals("true")) { haveKPI = true; kpiValue = vardefParts[1]; } } else { itemdef.setStructureRef(vardefParts[1]); } } if (haveKPI) { Utils.setMetaDataExtensionValue(prop, "customKPI", wrapInCDATABlock(kpiValue)); } } else { prop.setId(vardef); itemdef.setId("_" + prop.getId() + "Item"); } prop.setItemSubjectRef(itemdef); rootLevelProcess.getProperties().add(prop); ((Definitions) baseElt).getRootElements().add(itemdef); } } if (properties.get("adhocprocess") != null && properties.get("adhocprocess").equals("true")) { ExtendedMetaData metadata = ExtendedMetaData.INSTANCE; EAttributeImpl extensionAttribute = (EAttributeImpl) metadata .demandFeature("http://www.jboss.org/drools", "adHoc", false, false); SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("adhocprocess")); rootLevelProcess.getAnyAttribute().add(extensionEntry); } if (properties.get("customdescription") != null && properties.get("customdescription").length() > 0) { Utils.setMetaDataExtensionValue(rootLevelProcess, "customDescription", wrapInCDATABlock(properties.get("customdescription"))); } if (properties.get("customcaseidprefix") != null && properties.get("customcaseidprefix").length() > 0) { Utils.setMetaDataExtensionValue(rootLevelProcess, "customCaseIdPrefix", wrapInCDATABlock(properties.get("customcaseidprefix"))); } if (properties.get("customcaseroles") != null && properties.get("customcaseroles").length() > 0) { Utils.setMetaDataExtensionValue(rootLevelProcess, "customCaseRoles", wrapInCDATABlock(properties.get("customcaseroles"))); } // customsladuedate metadata applySlaDueDateProperties(rootLevelProcess, properties); rootLevelProcess.setId(properties.get("id")); applyProcessProperties(rootLevelProcess, properties); ((Definitions) baseElt).getRootElements().add(rootLevelProcess); } } else { for (BaseElement child : childElements) { // tasks are only permitted under processes. // a process should be created implicitly for tasks at the root // level. // process designer doesn't make a difference between tasks and // global tasks. // if a task has sequence edges it is considered a task, // otherwise it is considered a global task. // if (child instanceof Task && _outgoingFlows.get(child).isEmpty() && !_sequenceFlowTargets.contains(_objMap.get(child))) { // // no edges on a task at the top level! We replace it with a // // global task. // GlobalTask task = null; // if (child instanceof ScriptTask) { // task = Bpmn2Factory.eINSTANCE.createGlobalScriptTask(); // ((GlobalScriptTask) task).setScript(((ScriptTask) child).getScript()); // ((GlobalScriptTask) task).setScriptLanguage(((ScriptTask) child).getScriptFormat()); // // TODO scriptLanguage missing on scriptTask // } else if (child instanceof UserTask) { // task = Bpmn2Factory.eINSTANCE.createGlobalUserTask(); // } else if (child instanceof ServiceTask) { // // we don't have a global service task! Fallback on a // // normal global task // task = Bpmn2Factory.eINSTANCE.createGlobalTask(); // } else if (child instanceof BusinessRuleTask) { // task = Bpmn2Factory.eINSTANCE.createGlobalBusinessRuleTask(); // } else if (child instanceof ManualTask) { // task = Bpmn2Factory.eINSTANCE.createGlobalManualTask(); // } else { // task = Bpmn2Factory.eINSTANCE.createGlobalTask(); // } // // task.setName(((Task) child).getName()); // task.setIoSpecification(((Task) child).getIoSpecification()); // task.getDocumentation().addAll(((Task) child).getDocumentation()); // ((Definitions) baseElt).getRootElements().add(task); // continue; // } else { if (child instanceof SequenceFlow) { // for some reason sequence flows are placed as root elements. // find if the target has a container, and if we can use it: List<String> ids = _outgoingFlows.get(child); FlowElementsContainer container = null; for (String id : ids) { // yes, we iterate, but we'll take the first in the list that will work. Object obj = _idMap.get(id); if (obj instanceof EObject && ((EObject) obj).eContainer() instanceof FlowElementsContainer) { container = (FlowElementsContainer) ((EObject) obj).eContainer(); break; } } if (container != null) { container.getFlowElements().add((SequenceFlow) child); continue; } } if (child instanceof Task || child instanceof SequenceFlow || child instanceof Gateway || child instanceof Event || child instanceof Artifact || child instanceof DataObject || child instanceof SubProcess || child instanceof Lane || child instanceof CallActivity || child instanceof TextAnnotation) { if (rootLevelProcess == null) { rootLevelProcess = Bpmn2Factory.eINSTANCE.createProcess(); // set the properties and item definitions first if (properties.get("vardefs") != null && properties.get("vardefs").length() > 0) { String[] vardefs = properties.get("vardefs").split(",\\s*"); for (String vardef : vardefs) { Property prop = Bpmn2Factory.eINSTANCE.createProperty(); ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition(); // check if we define a structure ref in the definition if (vardef.contains(":")) { String[] vardefParts = vardef.split(":\\s*"); prop.setId(vardefParts[0]); itemdef.setId("_" + prop.getId() + "Item"); boolean haveKPI = false; String kpiValue = ""; if (vardefParts.length == 3) { itemdef.setStructureRef(vardefParts[1]); if (vardefParts[2].equals("true")) { haveKPI = true; kpiValue = vardefParts[2]; } } if (vardefParts.length == 2) { if (vardefParts[1].equals("true") || vardefParts[1].equals("false")) { if (vardefParts[1].equals("true")) { haveKPI = true; kpiValue = vardefParts[1]; } } else { itemdef.setStructureRef(vardefParts[1]); } } if (haveKPI) { Utils.setMetaDataExtensionValue(prop, "customKPI", wrapInCDATABlock(kpiValue)); } } else { prop.setId(vardef); itemdef.setId("_" + prop.getId() + "Item"); } prop.setItemSubjectRef(itemdef); rootLevelProcess.getProperties().add(prop); ((Definitions) baseElt).getRootElements().add(itemdef); } } if (properties.get("adhocprocess") != null && properties.get("adhocprocess").equals("true")) { ExtendedMetaData metadata = ExtendedMetaData.INSTANCE; EAttributeImpl extensionAttribute = (EAttributeImpl) metadata .demandFeature("http://www.jboss.org/drools", "adHoc", false, false); SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("adhocprocess")); rootLevelProcess.getAnyAttribute().add(extensionEntry); } if (properties.get("customdescription") != null && properties.get("customdescription").length() > 0) { Utils.setMetaDataExtensionValue(rootLevelProcess, "customDescription", wrapInCDATABlock(properties.get("customdescription"))); } if (properties.get("customcaseidprefix") != null && properties.get("customcaseidprefix").length() > 0) { Utils.setMetaDataExtensionValue(rootLevelProcess, "customCaseIdPrefix", wrapInCDATABlock(properties.get("customcaseidprefix"))); } if (properties.get("customcaseroles") != null && properties.get("customcaseroles").length() > 0) { Utils.setMetaDataExtensionValue(rootLevelProcess, "customCaseRoles", wrapInCDATABlock(properties.get("customcaseroles"))); } // customsladuedate metadata applySlaDueDateProperties(rootLevelProcess, properties); rootLevelProcess.setId(properties.get("id")); applyProcessProperties(rootLevelProcess, properties); ((Definitions) baseElt).getRootElements().add(rootLevelProcess); } } if (child instanceof Task) { rootLevelProcess.getFlowElements().add((Task) child); } else if (child instanceof CallActivity) { rootLevelProcess.getFlowElements().add((CallActivity) child); } else if (child instanceof RootElement) { ((Definitions) baseElt).getRootElements().add((RootElement) child); } else if (child instanceof SequenceFlow) { rootLevelProcess.getFlowElements().add((SequenceFlow) child); } else if (child instanceof Gateway) { rootLevelProcess.getFlowElements().add((Gateway) child); } else if (child instanceof Event) { rootLevelProcess.getFlowElements().add((Event) child); } else if (child instanceof TextAnnotation) { rootLevelProcess.getFlowElements().add((TextAnnotation) child); } else if (child instanceof Artifact) { rootLevelProcess.getArtifacts().add((Artifact) child); } else if (child instanceof DataObject) { // bubble up data objects //rootLevelProcess.getFlowElements().add(0, (DataObject) child); rootLevelProcess.getFlowElements().add((DataObject) child); // ItemDefinition def = ((DataObject) child).getItemSubjectRef(); // if (def != null) { // if (def.eResource() == null) { // ((Definitions) rootLevelProcess.eContainer()).getRootElements().add(0, def); // } // Import imported = def.getImport(); // if (imported != null && imported.eResource() == null) { // ((Definitions) rootLevelProcess.eContainer()).getImports().add(0, imported); // } // } } else if (child instanceof SubProcess) { rootLevelProcess.getFlowElements().add((SubProcess) child); } else if (child instanceof Lane) { // lanes handled later } else { _logger.error("Don't know what to do of " + child); } // } } } } else if (baseElt instanceof Process) { for (BaseElement child : childElements) { if (child instanceof Lane) { if (((Process) baseElt).getLaneSets().isEmpty()) { ((Process) baseElt).getLaneSets().add(Bpmn2Factory.eINSTANCE.createLaneSet()); } ((Process) baseElt).getLaneSets().get(0).getLanes().add((Lane) child); addLaneFlowNodes((Process) baseElt, (Lane) child); } else if (child instanceof Artifact) { ((Process) baseElt).getArtifacts().add((Artifact) child); } else { _logger.error("Don't know what to do of " + child); } } } else if (baseElt instanceof SubProcess) { for (BaseElement child : childElements) { if (child instanceof FlowElement) { ((SubProcess) baseElt).getFlowElements().add((FlowElement) child); } else if (child instanceof Artifact) { ((SubProcess) baseElt).getArtifacts().add((Artifact) child); } else { _logger.error("Subprocess - don't know what to do of " + child); } } } else if (baseElt instanceof Message) { // we do not support base-element messages from the json. They are created dynamically for events that use them. } else if (baseElt instanceof Lane) { for (BaseElement child : childElements) { if (child instanceof FlowNode) { ((Lane) baseElt).getFlowNodeRefs().add((FlowNode) child); } // no support for child-lanes at this point // else if (child instanceof Lane) { // if (((Lane) baseElt).getChildLaneSet() == null) { // ((Lane) baseElt).setChildLaneSet(Bpmn2Factory.eINSTANCE.createLaneSet()); // } // ((Lane) baseElt).getChildLaneSet().getLanes().add((Lane) child); // } else if (child instanceof Artifact) { _artifacts.add((Artifact) child); } else { _logger.error("Don't know what to do of " + childElements); } } _lanes.add((Lane) baseElt); } else { if (!childElements.isEmpty()) { _logger.error("Don't know what to do of " + childElements + " with " + baseElt); } } return baseElt; }
From source file:org.kie.workbench.common.stunner.bpmn.backend.legacy.Bpmn2JsonUnmarshaller.java
public BaseElement unmarshallItem(JsonParser parser, String preProcessingData) throws IOException { String resourceId = null;/* w ww . j a v a2s .c o m*/ Map<String, String> properties = null; String stencil = null; List<BaseElement> childElements = new ArrayList<BaseElement>(); List<String> outgoing = new ArrayList<String>(); while (parser.nextToken() != JsonToken.END_OBJECT) { String fieldname = parser.getCurrentName(); parser.nextToken(); if ("resourceId".equals(fieldname)) { resourceId = parser.getText(); } else if ("properties".equals(fieldname)) { properties = unmarshallProperties(parser); } else if ("stencil".equals(fieldname)) { // "stencil":{"id":"Task"}, parser.nextToken(); parser.nextToken(); stencil = parser.getText(); parser.nextToken(); } else if ("childShapes".equals(fieldname)) { while (parser.nextToken() != JsonToken.END_ARRAY) { // open the // object // the childShapes element is a json array. We opened the // array. childElements.add(unmarshallItem(parser, preProcessingData)); } } else if ("bounds".equals(fieldname)) { // bounds: {"lowerRight":{"x":484.0,"y":198.0},"upperLeft":{"x":454.0,"y":168.0}} parser.nextToken(); parser.nextToken(); parser.nextToken(); parser.nextToken(); Integer x2 = parser.getIntValue(); parser.nextToken(); parser.nextToken(); Integer y2 = parser.getIntValue(); parser.nextToken(); parser.nextToken(); parser.nextToken(); parser.nextToken(); parser.nextToken(); Integer x1 = parser.getIntValue(); parser.nextToken(); parser.nextToken(); Integer y1 = parser.getIntValue(); parser.nextToken(); parser.nextToken(); Bounds b = DcFactory.eINSTANCE.createBounds(); b.setX(x1); b.setY(y1); b.setWidth(x2 - x1); b.setHeight(y2 - y1); this._bounds.put(resourceId, b); } else if ("dockers".equals(fieldname)) { // "dockers":[{"x":50,"y":40},{"x":353.5,"y":115},{"x":353.5,"y":152},{"x":50,"y":40}], List<Point> dockers = new ArrayList<Point>(); JsonToken nextToken = parser.nextToken(); boolean end = JsonToken.END_ARRAY.equals(nextToken); while (!end) { nextToken = parser.nextToken(); nextToken = parser.nextToken(); Integer x = parser.getIntValue(); parser.nextToken(); parser.nextToken(); Integer y = parser.getIntValue(); Point point = DcFactory.eINSTANCE.createPoint(); point.setX(x); point.setY(y); dockers.add(point); parser.nextToken(); nextToken = parser.nextToken(); end = JsonToken.END_ARRAY.equals(nextToken); } this._dockers.put(resourceId, dockers); } else if ("outgoing".equals(fieldname)) { while (parser.nextToken() != JsonToken.END_ARRAY) { // {resourceId: oryx_1AAA8C9A-39A5-42FC-8ED1-507A7F3728EA} parser.nextToken(); parser.nextToken(); outgoing.add(parser.getText()); parser.nextToken(); } // pass on the array parser.skipChildren(); } else if ("target".equals(fieldname)) { // we already collected that info with the outgoing field. parser.skipChildren(); // "target": { // "resourceId": "oryx_A75E7546-DF71-48EA-84D3-2A8FD4A47568" // } // add to the map: // parser.nextToken(); // resourceId: // parser.nextToken(); // the value we want to save // targetId = parser.getText(); // parser.nextToken(); // }, closing the object } } properties.put("resourceId", resourceId); boolean customElement = isCustomElement(properties.get("tasktype"), preProcessingData); BaseElement baseElt = this.createBaseElement(stencil, properties.get("tasktype"), customElement); // register the sequence flow targets. if (baseElt instanceof SequenceFlow) { _sequenceFlowTargets.addAll(outgoing); } _outgoingFlows.put(baseElt, outgoing); _objMap.put(baseElt, resourceId); // keep the object around to do connections _idMap.put(resourceId, baseElt); // baseElt.setId(resourceId); commented out as bpmn2 seems to create // duplicate ids right now. applyProperties(baseElt, properties, preProcessingData); if (baseElt instanceof Definitions) { Process rootLevelProcess = null; if (childElements == null || childElements.size() < 1) { if (rootLevelProcess == null) { rootLevelProcess = Bpmn2Factory.eINSTANCE.createProcess(); // set the properties and item definitions first if (properties.get("vardefs") != null && properties.get("vardefs").length() > 0) { String[] vardefs = properties.get("vardefs").split(",\\s*"); for (String vardef : vardefs) { Property prop = Bpmn2Factory.eINSTANCE.createProperty(); ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition(); // check if we define a structure ref in the definition if (vardef.contains(":")) { String[] vardefParts = vardef.split(":\\s*"); prop.setId(vardefParts[0]); itemdef.setId("_" + prop.getId() + "Item"); boolean haveKPI = false; String kpiValue = ""; if (vardefParts.length == 3) { itemdef.setStructureRef(vardefParts[1]); if (vardefParts[2].equals("true")) { haveKPI = true; kpiValue = vardefParts[2]; } } if (vardefParts.length == 2) { if (vardefParts[1].equals("true") || vardefParts[1].equals("false")) { if (vardefParts[1].equals("true")) { haveKPI = true; kpiValue = vardefParts[1]; } } else { itemdef.setStructureRef(vardefParts[1]); } } if (haveKPI) { Utils.setMetaDataExtensionValue(prop, "customKPI", wrapInCDATABlock(kpiValue)); } } else { prop.setId(vardef); itemdef.setId("_" + prop.getId() + "Item"); } prop.setItemSubjectRef(itemdef); rootLevelProcess.getProperties().add(prop); ((Definitions) baseElt).getRootElements().add(itemdef); } } if (properties.get("adhocprocess") != null && properties.get("adhocprocess").equals("true")) { ExtendedMetaData metadata = ExtendedMetaData.INSTANCE; EAttributeImpl extensionAttribute = (EAttributeImpl) metadata .demandFeature("http://www.jboss.org/drools", "adHoc", false, false); SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("adhocprocess")); rootLevelProcess.getAnyAttribute().add(extensionEntry); } if (properties.get("customdescription") != null && properties.get("customdescription").length() > 0) { Utils.setMetaDataExtensionValue(rootLevelProcess, "customDescription", wrapInCDATABlock(properties.get("customdescription"))); } rootLevelProcess.setId(properties.get("id")); applyProcessProperties(rootLevelProcess, properties); ((Definitions) baseElt).getRootElements().add(rootLevelProcess); } } else { for (BaseElement child : childElements) { // tasks are only permitted under processes. // a process should be created implicitly for tasks at the root // level. // process designer doesn't make a difference between tasks and // global tasks. // if a task has sequence edges it is considered a task, // otherwise it is considered a global task. // if (child instanceof Task && _outgoingFlows.get(child).isEmpty() && !_sequenceFlowTargets.contains(_objMap.get(child))) { // // no edges on a task at the top level! We replace it with a // // global task. // GlobalTask task = null; // if (child instanceof ScriptTask) { // task = Bpmn2Factory.eINSTANCE.createGlobalScriptTask(); // ((GlobalScriptTask) task).setScript(((ScriptTask) child).getScript()); // ((GlobalScriptTask) task).setScriptLanguage(((ScriptTask) child).getScriptFormat()); // // TODO scriptLanguage missing on scriptTask // } else if (child instanceof UserTask) { // task = Bpmn2Factory.eINSTANCE.createGlobalUserTask(); // } else if (child instanceof ServiceTask) { // // we don't have a global service task! Fallback on a // // normal global task // task = Bpmn2Factory.eINSTANCE.createGlobalTask(); // } else if (child instanceof BusinessRuleTask) { // task = Bpmn2Factory.eINSTANCE.createGlobalBusinessRuleTask(); // } else if (child instanceof ManualTask) { // task = Bpmn2Factory.eINSTANCE.createGlobalManualTask(); // } else { // task = Bpmn2Factory.eINSTANCE.createGlobalTask(); // } // // task.setName(((Task) child).getName()); // task.setIoSpecification(((Task) child).getIoSpecification()); // task.getDocumentation().addAll(((Task) child).getDocumentation()); // ((Definitions) baseElt).getRootElements().add(task); // continue; // } else { if (child instanceof SequenceFlow) { // for some reason sequence flows are placed as root elements. // find if the target has a container, and if we can use it: List<String> ids = _outgoingFlows.get(child); FlowElementsContainer container = null; for (String id : ids) { // yes, we iterate, but we'll take the first in the list that will work. Object obj = _idMap.get(id); if (obj instanceof EObject && ((EObject) obj).eContainer() instanceof FlowElementsContainer) { container = (FlowElementsContainer) ((EObject) obj).eContainer(); break; } } if (container != null) { container.getFlowElements().add((SequenceFlow) child); continue; } } if (child instanceof Task || child instanceof SequenceFlow || child instanceof Gateway || child instanceof Event || child instanceof Artifact || child instanceof DataObject || child instanceof SubProcess || child instanceof Lane || child instanceof CallActivity || child instanceof TextAnnotation) { if (rootLevelProcess == null) { rootLevelProcess = Bpmn2Factory.eINSTANCE.createProcess(); // set the properties and item definitions first if (properties.get("vardefs") != null && properties.get("vardefs").length() > 0) { String[] vardefs = properties.get("vardefs").split(",\\s*"); for (String vardef : vardefs) { Property prop = Bpmn2Factory.eINSTANCE.createProperty(); ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition(); // check if we define a structure ref in the definition if (vardef.contains(":")) { String[] vardefParts = vardef.split(":\\s*"); prop.setId(vardefParts[0]); itemdef.setId("_" + prop.getId() + "Item"); boolean haveKPI = false; String kpiValue = ""; if (vardefParts.length == 3) { itemdef.setStructureRef(vardefParts[1]); if (vardefParts[2].equals("true")) { haveKPI = true; kpiValue = vardefParts[2]; } } if (vardefParts.length == 2) { if (vardefParts[1].equals("true") || vardefParts[1].equals("false")) { if (vardefParts[1].equals("true")) { haveKPI = true; kpiValue = vardefParts[1]; } } else { itemdef.setStructureRef(vardefParts[1]); } } if (haveKPI) { Utils.setMetaDataExtensionValue(prop, "customKPI", wrapInCDATABlock(kpiValue)); } } else { prop.setId(vardef); itemdef.setId("_" + prop.getId() + "Item"); } prop.setItemSubjectRef(itemdef); rootLevelProcess.getProperties().add(prop); ((Definitions) baseElt).getRootElements().add(itemdef); } } if (properties.get("adhocprocess") != null && properties.get("adhocprocess").equals("true")) { ExtendedMetaData metadata = ExtendedMetaData.INSTANCE; EAttributeImpl extensionAttribute = (EAttributeImpl) metadata .demandFeature("http://www.jboss.org/drools", "adHoc", false, false); SimpleFeatureMapEntry extensionEntry = new SimpleFeatureMapEntry(extensionAttribute, properties.get("adhocprocess")); rootLevelProcess.getAnyAttribute().add(extensionEntry); } if (properties.get("customdescription") != null && properties.get("customdescription").length() > 0) { Utils.setMetaDataExtensionValue(rootLevelProcess, "customDescription", wrapInCDATABlock(properties.get("customdescription"))); } rootLevelProcess.setId(properties.get("id")); applyProcessProperties(rootLevelProcess, properties); ((Definitions) baseElt).getRootElements().add(rootLevelProcess); } } if (child instanceof Task) { rootLevelProcess.getFlowElements().add((Task) child); } else if (child instanceof CallActivity) { rootLevelProcess.getFlowElements().add((CallActivity) child); } else if (child instanceof RootElement) { ((Definitions) baseElt).getRootElements().add((RootElement) child); } else if (child instanceof SequenceFlow) { rootLevelProcess.getFlowElements().add((SequenceFlow) child); } else if (child instanceof Gateway) { rootLevelProcess.getFlowElements().add((Gateway) child); } else if (child instanceof Event) { rootLevelProcess.getFlowElements().add((Event) child); } else if (child instanceof TextAnnotation) { rootLevelProcess.getFlowElements().add((TextAnnotation) child); } else if (child instanceof Artifact) { rootLevelProcess.getArtifacts().add((Artifact) child); } else if (child instanceof DataObject) { // bubble up data objects //rootLevelProcess.getFlowElements().add(0, (DataObject) child); rootLevelProcess.getFlowElements().add((DataObject) child); // ItemDefinition def = ((DataObject) child).getItemSubjectRef(); // if (def != null) { // if (def.eResource() == null) { // ((Definitions) rootLevelProcess.eContainer()).getRootElements().add(0, def); // } // Import imported = def.getImport(); // if (imported != null && imported.eResource() == null) { // ((Definitions) rootLevelProcess.eContainer()).getImports().add(0, imported); // } // } } else if (child instanceof SubProcess) { rootLevelProcess.getFlowElements().add((SubProcess) child); } else if (child instanceof Lane) { // lanes handled later } else { _logger.error("Don't know what to do of " + child); } // } } } } else if (baseElt instanceof Process) { for (BaseElement child : childElements) { if (child instanceof Lane) { if (((Process) baseElt).getLaneSets().isEmpty()) { ((Process) baseElt).getLaneSets().add(Bpmn2Factory.eINSTANCE.createLaneSet()); } ((Process) baseElt).getLaneSets().get(0).getLanes().add((Lane) child); addLaneFlowNodes((Process) baseElt, (Lane) child); } else if (child instanceof Artifact) { ((Process) baseElt).getArtifacts().add((Artifact) child); } else { _logger.error("Don't know what to do of " + child); } } } else if (baseElt instanceof SubProcess) { for (BaseElement child : childElements) { if (child instanceof FlowElement) { ((SubProcess) baseElt).getFlowElements().add((FlowElement) child); } else if (child instanceof Artifact) { ((SubProcess) baseElt).getArtifacts().add((Artifact) child); } else { _logger.error("Subprocess - don't know what to do of " + child); } } } else if (baseElt instanceof Message) { // we do not support base-element messages from the json. They are created dynamically for events that use them. } else if (baseElt instanceof Lane) { for (BaseElement child : childElements) { if (child instanceof FlowNode) { ((Lane) baseElt).getFlowNodeRefs().add((FlowNode) child); } // no support for child-lanes at this point // else if (child instanceof Lane) { // if (((Lane) baseElt).getChildLaneSet() == null) { // ((Lane) baseElt).setChildLaneSet(Bpmn2Factory.eINSTANCE.createLaneSet()); // } // ((Lane) baseElt).getChildLaneSet().getLanes().add((Lane) child); // } else if (child instanceof Artifact) { _artifacts.add((Artifact) child); } else { _logger.error("Don't know what to do of " + childElements); } } _lanes.add((Lane) baseElt); } else { if (!childElements.isEmpty()) { _logger.error("Don't know what to do of " + childElements + " with " + baseElt); } } return baseElt; }