package com.fitbank.bpm.client; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import com.fitbank.common.logger.FitbankLogger; /** * Contiene la información visual de un proceso. * * @author Bantec Inc. */ public class ActivityMetaData implements JSONSerializable { private final static Logger LOGGER = FitbankLogger.getLogger(); private final String name; private final String subProcessDefinitionId; private final int x; private final int y; private final int h; private final int w; public ActivityMetaData(String name, int x, int y, int h, int w) { this(name, null, x, y, h, w); } public ActivityMetaData(String name, String subProcessDefinitionId, int x, int y, int h, int w) { this.name = name; this.subProcessDefinitionId = subProcessDefinitionId; this.x = x; this.y = y; this.h = h; this.w = w; } public String getName() { return this.name; } public String getSubProcessDefinitionId() { return this.subProcessDefinitionId; } public int getX() { return this.x; } public int getY() { return this.y; } public int getW() { return this.w; } public int getH() { return this.h; } public List getSubProcessMetadata() { BPMProcessor client = BPMProcessor.findProcessInstanceById( this.subProcessDefinitionId); return client.getActualMetadata(); } @Override public String toJSON() { JSONObject json = new JSONObject(); List activityMetadatas = new ArrayList(); if (this.subProcessDefinitionId != null) { try { BPMProcessor client = BPMProcessor.findProcessInstanceById( this.subProcessDefinitionId); activityMetadatas = client.getActualMetadata(); json.element("processId", client.getProcessInstance(). getProcessDefinitionId()); json.element("image", client.createImageBase64()); } catch (Exception ex) { LOGGER.debug("Excepción desconocida!", ex); } } json.element("x", this.x); json.element("y", this.y); json.element("h", this.h); json.element("w", this.w); if (!activityMetadatas.isEmpty()) { JSONArray array = new JSONArray(); for (ActivityMetaData activityMetaData : activityMetadatas) { array.add(activityMetaData.toJSON()); } json.element("activities", array); } return json.toString(); } @Override public String toString() { String sub = ""; if (this.subProcessDefinitionId != null) { sub = "\n(" + this.subProcessDefinitionId + ")"; try { for (ActivityMetaData meta : this.getSubProcessMetadata()) { sub += "\n\t" + meta; } } catch (Exception ex) { LOGGER.debug("Excepción desconocida!", ex); } } sub = sub.replaceAll("\n", "\n\t"); return this.name + " [h=" + this.h + ", w=" + this.w + ", x=" + this.x + ", y=" + this.y + "]" + sub; } }