package org.orienteer.bpm.camunda.handler; import org.camunda.bpm.engine.impl.persistence.entity.TaskEntity; import org.camunda.bpm.engine.impl.persistence.entity.UserEntity; import org.orienteer.bpm.camunda.OPersistenceSession; import org.orienteer.bpm.camunda.handler.history.HistoricIdentityLinkLogEventEntityHandler; import org.orienteer.bpm.camunda.handler.history.UserOperationLogEntryEventEntityHandler; import org.orienteer.core.util.OSchemaHelper; import com.orientechnologies.orient.core.metadata.schema.OType; import com.orientechnologies.orient.core.metadata.security.OIdentity; import com.orientechnologies.orient.core.metadata.security.OUser; import com.orientechnologies.orient.core.record.impl.ODocument; /** * {@link IEntityHandler} for {@link UserEntity} */ public class UserEntityHandler extends AbstractEntityHandler<UserEntity> { public static final String OCLASS_NAME = OUser.CLASS_NAME; public UserEntityHandler() { super(OCLASS_NAME, "name"); } @Override protected void initMapping(OPersistenceSession session) { super.initMapping(session); mappingFromDocToEntity.put("name", "id"); mappingFromEntityToDoc.put("id", "name"); } @Override public UserEntity mapToEntity(ODocument doc, UserEntity entity, OPersistenceSession session) { UserEntity ret = super.mapToEntity(doc, entity, session); ret.setFirstName(ret.getId()); //TODO: Extend OUser return ret; } @Override public void applySchema(OSchemaHelper helper) { helper.oClass(OCLASS_NAME) .oProperty("assignedTasks", OType.LINKLIST, 10).assignVisualization("table") .oProperty("ownedTasks", OType.LINKLIST, 20).assignVisualization("table") .oProperty("availableTasks", OType.LINKLIST, 20).assignVisualization("table") .oProperty("userOperationLogEntryEvents", OType.LINKLIST, 40).assignVisualization("table"); } @Override public void applyRelationships(OSchemaHelper helper) { helper.setupRelationship(TaskEntityHandler.OCLASS_NAME, "assignee", UserEntityHandler.OCLASS_NAME, "assignedTasks"); helper.setupRelationship(TaskEntityHandler.OCLASS_NAME, "owner", UserEntityHandler.OCLASS_NAME, "ownedTasks"); helper.setupRelationship(IdentityLinkEntityHandler.OCLASS_NAME, "user", UserEntityHandler.OCLASS_NAME, "availableTasks"); helper.setupRelationship(OCLASS_NAME, "userOperationLogEntryEvents", UserOperationLogEntryEventEntityHandler.OCLASS_NAME, "user"); } }