
<Pairs>
<Pair>
<Key>data1</Key>
<Value>datavalue1</Value>
...
<Pair>
<Pair>
<Key>data2</Key>
<Value>datavalue1</Value>
<Value>datavalue2</Value>
...
<Pair>
...
<Pairs>
package <Vendor>.common.data.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "Pair")
public class DataPair implements Serializable {
private static final long serialVersionUID = 1L;
private String key;
private List<String> value = new ArrayList<String>();
public DataPair() {
super();
}
public DataPair(String key, List<String> value) {
super();
this.key = key;
this.value.addAll(value);
}
@XmlElement(name = "Key")
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
@XmlElement(name = "Value")
public List<String> getValue() {
return value;
}
public void setValue(List<String> value) {
this.value = value;
}
}
package <Vendor>.common.data.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "Pairs")
public class DataPairs implements Serializable {
private static final long serialVersionUID = 1L;
private List<DataPair> dataPair;
public DataPairs() {
dataPair = new ArrayList<DataPair>();
}
@XmlElement(name = "Pair")
public List<DataPair> getDataPair() {
return dataPair;
}
public void setDataPair(List<DataPair> dataPair) {
this.dataPair = dataPair;
}
public void add(DataPair dataPair) {
this.dataPair.add(dataPair);
}
public void addAll(List<DataPair> dataPair) {
this.dataPair.addAll(dataPair);
}
public void remove(DataPair dataPair) {
this.dataPair.remove(dataPair);
}
public void removeAll(List<DataPair> dataPair) {
this.dataPair.removeAll(dataPair);
}
}
package <Vendor>.common.data.model;
import java.io.Serializable;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import com.sap.tc.logging.Location;
import com.sap.tc.logging.Severity;
import com.sap.tc.logging.SimpleLogger;
public class TaskDataDto implements Serializable {
private static final long serialVersionUID = 1L;
private static Location logger = Location.getLocation(TaskDataDto.class);
private String taskInstanceID;
private DataPairs taskDataPairs;
public TaskDataDto() {
super();
}
public TaskDataDto(TaskDataEntry taskDataEntry) {
super();
if (null != taskDataEntry) {
this.setTaskInstanceID(taskDataEntry.getTaskInstanceID());
this.setTaskDataPairs(taskDataEntry.getContent());
}
}
public String getTaskInstanceID() {
return taskInstanceID;
}
public void setTaskInstanceID(String taskInstanceID) {
this.taskInstanceID = taskInstanceID;
}
public DataPairs getTaskDataPairs() {
return taskDataPairs;
}
public void setTaskDataPairs(DataPairs taskDataPairs) {
this.taskDataPairs = taskDataPairs;
}
private void setTaskDataPairs(String content) {
try {
taskDataPairs = unmarshallContent(content);
} catch (JAXBException e) {
taskDataPairs = null;
SimpleLogger.trace(Severity.INFO, logger, "An error occured:", e);
}
}
public TaskDataEntry toEntity() throws JAXBException {
TaskDataEntry taskDataEntry = new TaskDataEntry();
taskDataEntry.setTaskInstanceID(taskInstanceID);
taskDataEntry.setContent(marshallTaskDataPairs(taskDataPairs));
return taskDataEntry;
}
public static String marshallTaskDataPairs(DataPairs taskDataPairs) throws JAXBException {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(DataPairs.class);
Marshaller marshaller = jaxbContext.createMarshaller();
StringWriter strWriter = new StringWriter();
marshaller.marshal(taskDataPairs, strWriter);
return strWriter.toString();
} catch (JAXBException e) {
SimpleLogger.traceThrowable(Severity.ERROR, logger, "JAXBException inside toEntity()", e);
throw e;
}
}
public static DataPairs unmarshallContent(String content) throws JAXBException {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(DataPairs.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader strReader = new StringReader(content);
return (DataPairs) unmarshaller.unmarshal(strReader);
} catch (JAXBException e) {
SimpleLogger.traceThrowable(Severity.ERROR, logger, "JAXBException inside setTaskDataPairs()", e);
throw e;
}
}
}
package <vendor>.common.data.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
@Entity
@Table(name = "<DB prefix>_TASK_DATA")
public class TaskDataEntry implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "TID", length = 50)
private String taskInstanceID;
@Lob
@Column(name = "CONTENT")
private String content;
public TaskDataEntry() {
super();
}
public String getTaskInstanceID() {
return this.taskInstanceID;
}
public void setTaskInstanceID(String taskInstanceID) {
this.taskInstanceID = taskInstanceID;
}
public String getContent() {
return this.content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public boolean equals(Object pObj) {
return (pObj != null) && pObj.getClass().equals(this.getClass()) && (this.getTaskInstanceID() != null) && (((TaskDataEntry) pObj).getTaskInstanceID() != null)
&& this.getTaskInstanceID().equals(((TaskDataEntry) pObj).getTaskInstanceID());
}
@Override
public int hashCode() {
if (getTaskInstanceID() != null) {
return getTaskInstanceID().hashCode();
} else {
return super.hashCode();
}
}
}
package <Vendor>.common.data.service;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TransactionRequiredException;
import javax.xml.bind.JAXBException;
import <Vendor>.common.data.model.DataPair;
import <Vendor>.common.data.model.DataPairs;
import <Vendor>.common.data.model.TaskDataConstants;
import <Vendor>.common.data.model.TaskDataDto;
import <Vendor>.common.data.model.TaskDataEntry;
import com.sap.tc.logging.Location;
import com.sap.tc.logging.Severity;
import com.sap.tc.logging.SimpleLogger;
/**
* Session Bean implementation class TaskDataService
*/
@Stateless
public class TaskDataService implements TaskDataServiceLocal {
private Location logger = Location.getLocation(TaskDataService.class);
private static final String TASK_INSTANCE_ID = "taskInstanceID";
private static final String TID_NULL_ERROR = "TaskInstanceID must not be null";
private static final String TIDS_NULL_ERROR = "TaskInstanceIDs must not be null";
private static final String DTO_NULL_ERROR = "TaskDataDto must not be null";
private static final String KEY_NULL_ERROR = "Key must not be null";
private static final String KEYS_NULL_ERROR = "Keys must not be null";
private static final String VALUE_NULL_ERROR = "Value must not be null";
private static final String DATAMAP_NULL_ERROR = "TaskDataMap must not be null";
private static final String STANDARD_ERROR = "An error occured:";
private static final String SQL_DELETE_ALL_TASK_DATA = "delete from TaskDataEntry t";
private static final String SQL_DELETE_TASK_DATA_BY_TID = "delete from TaskDataEntry t where t.taskInstanceID = :taskInstanceID";
private static final String SQL_DELETE_TASK_DATA_BY_TID_LIST = "delete from TaskDataEntry t where t.taskInstanceID in ({0})";
private static final String SQL_READ_ALL_TASK_DATA = "select t from TaskDataEntry t";
private static final String SQL_READ_TASK_DATA_BY_TID = "select t from TaskDataEntry t where t.taskInstanceID = :taskInstanceID";
private static final String SQL_READ_TASK_DATA_BY_TID_LIST = "select t from TaskDataEntry t where t.taskInstanceID in ({0})";
private static final String SQL_VALUE_WITH_COMMA = "\'\'{0}\'\'";
private static final String SQL_COMMA_VALUE_WITH_COMMA = ",\'\'{0}\'\'";
@PersistenceContext
private EntityManager em;
private TaskDataDto createTaskData(TaskDataDto taskDataDto) throws TaskDataServiceException {
if (taskDataDto == null) {
throw new TaskDataServiceException(DTO_NULL_ERROR);
}
try {
return new TaskDataDto(em.merge(taskDataDto.toEntity()));
} catch (IllegalStateException e) {
throw new TaskDataServiceException(e);
} catch (IllegalArgumentException e) {
throw new TaskDataServiceException(e);
} catch (TransactionRequiredException e) {
throw new TaskDataServiceException(e);
} catch (JAXBException e) {
throw new TaskDataServiceException(e);
}
}
@Override
public boolean deleteAllTaskData() throws TaskDataServiceException {
Query query = em.createQuery(SQL_DELETE_ALL_TASK_DATA);
try {
query.executeUpdate();
return true;
} catch (IllegalStateException e) {
throw new TaskDataServiceException(e);
}
}
@Override
public boolean deleteTaskDataByTaskInstanceID(String taskInstanceID) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
Query query = em.createQuery(SQL_DELETE_TASK_DATA_BY_TID);
query.setParameter(TASK_INSTANCE_ID, taskInstanceID);
try {
query.executeUpdate();
return true;
} catch (IllegalStateException e) {
throw new TaskDataServiceException(e);
}
}
@Override
public List<TaskDataDto> readAllTaskData() {
Query query = em.createQuery(SQL_READ_ALL_TASK_DATA);
List<TaskDataEntry> resultList = query.getResultList();
return createDtoList(resultList);
}
@Override
public TaskDataDto readTaskDataByTaskInstanceID(String taskInstanceID) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
Query query = em.createQuery(SQL_READ_TASK_DATA_BY_TID);
query.setParameter(TASK_INSTANCE_ID, taskInstanceID);
TaskDataEntry taskDataEntry = null;
try {
taskDataEntry = (TaskDataEntry) query.getSingleResult();
} catch (NoResultException e) {
// please return null in case of no result
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
}
return taskDataEntry != null ? new TaskDataDto(taskDataEntry) : null;
}
@Override
public TaskDataDto createAndUpdateTaskData(TaskDataDto taskDataDto) throws TaskDataServiceException {
if (taskDataDto == null) {
throw new TaskDataServiceException(DTO_NULL_ERROR);
}
try {
Query query = em.createQuery(SQL_READ_TASK_DATA_BY_TID);
query.setParameter(TASK_INSTANCE_ID, taskDataDto.getTaskInstanceID());
TaskDataEntry taskDataEntry = null;
try {
taskDataEntry = (TaskDataEntry) query.getSingleResult();
taskDataEntry.setContent(TaskDataDto.marshallTaskDataPairs(taskDataDto.getTaskDataPairs()));
return new TaskDataDto(em.merge(taskDataEntry));
} catch (NoResultException e) {
// in case the entry doesn't exists create a new one
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
return createTaskData(taskDataDto);
}
} catch (IllegalStateException e) {
throw new TaskDataServiceException(e);
} catch (IllegalArgumentException e) {
throw new TaskDataServiceException(e);
} catch (TransactionRequiredException e) {
throw new TaskDataServiceException(e);
} catch (JAXBException e) {
throw new TaskDataServiceException(e);
}
}
private List<TaskDataDto> createDtoList(List<TaskDataEntry> resultList) {
List<TaskDataDto> dtoList = new ArrayList<TaskDataDto>();
if (resultList != null) {
for (TaskDataEntry aTaskDataEntry : resultList) {
dtoList.add(new TaskDataDto(aTaskDataEntry));
}
}
return dtoList;
}
@Override
public List<String> readAllTaskInstanceIDsOfTaskData() {
Query query = em.createQuery(SQL_READ_ALL_TASK_DATA);
List<TaskDataEntry> taskDataEntries = query.getResultList();
List<String> taskInstanceIDs = new ArrayList<String>();
for (TaskDataEntry aTaskDataEntry : taskDataEntries) {
taskInstanceIDs.add(aTaskDataEntry.getTaskInstanceID());
}
return taskInstanceIDs;
}
@Override
public Map<String, List<String>> readTaskDataHashMapByTaskInstanceID(String taskInstanceID) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
HashMap<String, List<String>> taskDataMap = new HashMap<String, List<String>>();
TaskDataDto taskDataDto = readTaskDataByTaskInstanceID(taskInstanceID);
if (null != taskDataDto && null != taskDataDto.getTaskDataPairs() && null != taskDataDto.getTaskDataPairs().getDataPair()) {
taskDataMap = taskDataPairToHashMap(taskDataDto.getTaskDataPairs().getDataPair());
}
return taskDataMap;
}
@Override
public List<String> readTaskDataListByTaskInstanceIDAndKey(String taskInstanceID, String key) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
if (key == null) {
throw new TaskDataServiceException(KEY_NULL_ERROR);
}
List<String> taskInstanceIDs = new ArrayList<String>();
taskInstanceIDs.add(taskInstanceID);
Map<String, List<String>> map = readTaskDataValueHashMapByTaskInstanceIDsAndKey(taskInstanceIDs, key);
return map.get(taskInstanceID);
}
private TaskDataDto createTaskDataByTaskInstanceIDAndHashMap(String taskInstanceID, Map<String, List<String>> taskDataMap) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
if (taskDataMap == null) {
throw new TaskDataServiceException(DATAMAP_NULL_ERROR);
}
TaskDataDto taskDataDto = new TaskDataDto();
taskDataDto.setTaskInstanceID(taskInstanceID);
DataPairs pairs = new DataPairs();
Set<String> keys = taskDataMap.keySet();
for (String aKey : keys) {
DataPair aPair = new DataPair(aKey, taskDataMap.get(aKey));
pairs.add(aPair);
}
taskDataDto.setTaskDataPairs(pairs);
return createTaskData(taskDataDto);
}
@Override
public TaskDataDto createAndUpdateTaskDataByTaskInstanceIDAndHashMap(String taskInstanceID, Map<String, List<String>> taskDataMap) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
if (taskDataMap == null) {
throw new TaskDataServiceException(DATAMAP_NULL_ERROR);
}
try {
Query query = em.createQuery(SQL_READ_TASK_DATA_BY_TID);
query.setParameter(TASK_INSTANCE_ID, taskInstanceID);
TaskDataEntry taskDataEntry = null;
try {
// get the task data
taskDataEntry = (TaskDataEntry) query.getSingleResult();
DataPairs entryTaskDataPairs = TaskDataDto.unmarshallContent(taskDataEntry.getContent());
List<DataPair> entryTaskDataPair = entryTaskDataPairs.getDataPair();
HashMap<String, List<String>> entryHashMap = taskDataPairToHashMap(entryTaskDataPair);
// modify the task data
Set<String> inputHashMapKeys = taskDataMap.keySet();
for (String aInputHashMapKey : inputHashMapKeys) {
entryHashMap.put(aInputHashMapKey, taskDataMap.get(aInputHashMapKey));
}
// store the modified task data
entryTaskDataPair = hashMapToTaskDataPair(entryHashMap);
entryTaskDataPairs.setDataPair(entryTaskDataPair);
taskDataEntry.setContent(TaskDataDto.marshallTaskDataPairs(entryTaskDataPairs));
return new TaskDataDto(em.merge(taskDataEntry));
} catch (NoResultException e) {
// in case the entry doesn't exists create a new one
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
return createTaskDataByTaskInstanceIDAndHashMap(taskInstanceID, taskDataMap);
}
} catch (IllegalStateException e) {
throw new TaskDataServiceException(e);
} catch (IllegalArgumentException e) {
throw new TaskDataServiceException(e);
} catch (TransactionRequiredException e) {
throw new TaskDataServiceException(e);
} catch (JAXBException e) {
throw new TaskDataServiceException(e);
}
}
private HashMap<String, List<String>> taskDataPairToHashMap(List<DataPair> taskDataPair) {
HashMap<String, List<String>> taskDataMap = new HashMap<String, List<String>>();
for (DataPair aTaskDataPair : taskDataPair) {
taskDataMap.put(aTaskDataPair.getKey(), aTaskDataPair.getValue());
}
return taskDataMap;
}
private List<DataPair> hashMapToTaskDataPair(HashMap<String, List<String>> hashMap) {
List<DataPair> taskDataPair = new ArrayList<DataPair>();
Set<String> keys = hashMap.keySet();
for (String aKey : keys) {
DataPair aTaskDataPair = new DataPair();
aTaskDataPair.setKey(aKey);
aTaskDataPair.setValue(hashMap.get(aKey));
taskDataPair.add(aTaskDataPair);
}
return taskDataPair;
}
@Override
public TaskDataDto createAndUpdateTaskDataByTaskInstanceIDAndKey(String taskInstanceID, String key, List<String> value) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
if (key == null) {
throw new TaskDataServiceException(KEY_NULL_ERROR);
}
if (value == null) {
throw new TaskDataServiceException(VALUE_NULL_ERROR);
}
HashMap<String, List<String>> taskDataMap = new HashMap<String, List<String>>();
taskDataMap.put(key, value);
return createAndUpdateTaskDataByTaskInstanceIDAndHashMap(taskInstanceID, taskDataMap);
}
@Override
public TaskDataDto createAndUpdateTaskDataByTaskInstanceIDAndKey(String taskInstanceID, TaskDataConstants key, List<String> value) throws TaskDataServiceException {
return createAndUpdateTaskDataByTaskInstanceIDAndKey(taskInstanceID, key.toString(), value);
}
@Override
public TaskDataDto deleteTaskDataByTaskInstanceIDAndKey(String taskInstanceID, String key) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
if (key == null) {
throw new TaskDataServiceException(KEY_NULL_ERROR);
}
try {
Query query = em.createQuery(SQL_READ_TASK_DATA_BY_TID);
query.setParameter(TASK_INSTANCE_ID, taskInstanceID);
TaskDataEntry taskDataEntry = null;
try {
// get the task data
taskDataEntry = (TaskDataEntry) query.getSingleResult();
DataPairs entryTaskDataPairs = TaskDataDto.unmarshallContent(taskDataEntry.getContent());
List<DataPair> entryTaskDataPair = entryTaskDataPairs.getDataPair();
HashMap<String, List<String>> entryHashMap = taskDataPairToHashMap(entryTaskDataPair);
// remove the specific task data
entryHashMap.remove(key);
// store the modified task data
entryTaskDataPair = hashMapToTaskDataPair(entryHashMap);
entryTaskDataPairs.setDataPair(entryTaskDataPair);
taskDataEntry.setContent(TaskDataDto.marshallTaskDataPairs(entryTaskDataPairs));
return new TaskDataDto(em.merge(taskDataEntry));
} catch (NoResultException e) {
// in case the entry doesn't exists do nothing
return null;
}
} catch (IllegalStateException e) {
throw new TaskDataServiceException(e);
} catch (IllegalArgumentException e) {
throw new TaskDataServiceException(e);
} catch (TransactionRequiredException e) {
throw new TaskDataServiceException(e);
} catch (JAXBException e) {
throw new TaskDataServiceException(e);
}
}
@Override
public TaskDataDto deleteTaskDataByTaskInstanceIDAndKey(String taskInstanceID, TaskDataConstants key) throws TaskDataServiceException {
return deleteTaskDataByTaskInstanceIDAndKey(taskInstanceID, key.toString());
}
@Override
public TaskDataDto deleteTaskDataByTaskInstanceIDAndKeyList(String taskInstanceID, List<String> keys) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
if (keys == null) {
throw new TaskDataServiceException(KEYS_NULL_ERROR);
}
try {
Query query = em.createQuery(SQL_READ_TASK_DATA_BY_TID);
query.setParameter(TASK_INSTANCE_ID, taskInstanceID);
TaskDataEntry taskDataEntry = null;
try {
// get the task data
taskDataEntry = (TaskDataEntry) query.getSingleResult();
DataPairs entryTaskDataPairs = TaskDataDto.unmarshallContent(taskDataEntry.getContent());
List<DataPair> entryTaskDataPair = entryTaskDataPairs.getDataPair();
HashMap<String, List<String>> entryHashMap = taskDataPairToHashMap(entryTaskDataPair);
// remove the specific task data
for (String aKey : keys) {
entryHashMap.remove(aKey);
}
// store the modified task data
entryTaskDataPair = hashMapToTaskDataPair(entryHashMap);
entryTaskDataPairs.setDataPair(entryTaskDataPair);
taskDataEntry.setContent(TaskDataDto.marshallTaskDataPairs(entryTaskDataPairs));
return new TaskDataDto(em.merge(taskDataEntry));
} catch (NoResultException e) {
// in case the entry doesn't exists do nothing
return null;
}
} catch (IllegalStateException e) {
throw new TaskDataServiceException(e);
} catch (IllegalArgumentException e) {
throw new TaskDataServiceException(e);
} catch (TransactionRequiredException e) {
throw new TaskDataServiceException(e);
} catch (JAXBException e) {
throw new TaskDataServiceException(e);
}
}
@Override
public TaskDataDto deleteTaskDataByTaskInstanceIDAndKeyConstants(String taskInstanceID, List<TaskDataConstants> keys) throws TaskDataServiceException {
List<String> stringKeys = new ArrayList<String>();
for (TaskDataConstants aTaskDataConstant : keys) {
stringKeys.add(aTaskDataConstant.toString());
}
return deleteTaskDataByTaskInstanceIDAndKeyList(taskInstanceID, stringKeys);
}
@Override
public List<String> readTaskDataKeyListByTaskInstanceID(String taskInstanceID) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
List<String> taskDataKeys = new ArrayList<String>();
try {
Query query = em.createQuery(SQL_READ_TASK_DATA_BY_TID);
query.setParameter(TASK_INSTANCE_ID, taskInstanceID);
TaskDataEntry taskDataEntry = null;
try {
// get the task data
taskDataEntry = (TaskDataEntry) query.getSingleResult();
DataPairs entryTaskDataPairs = TaskDataDto.unmarshallContent(taskDataEntry.getContent());
List<DataPair> entryTaskDataPair = entryTaskDataPairs.getDataPair();
HashMap<String, List<String>> entryHashMap = taskDataPairToHashMap(entryTaskDataPair);
taskDataKeys.addAll(entryHashMap.keySet());
} catch (NoResultException e) {
// in case the entry doesn't exists do nothing
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
}
} catch (IllegalStateException e) {
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
} catch (IllegalArgumentException e) {
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
} catch (TransactionRequiredException e) {
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
} catch (JAXBException e) {
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
}
return taskDataKeys;
}
@Override
public boolean hasTaskDataByTaskInstanceID(String taskInstanceID) throws TaskDataServiceException {
if (taskInstanceID == null) {
throw new TaskDataServiceException(TID_NULL_ERROR);
}
boolean hasTaskData = false;
List<String> taskDataKeys = readTaskDataKeyListByTaskInstanceID(taskInstanceID);
if (!taskDataKeys.isEmpty()) {
hasTaskData = true;
}
return hasTaskData;
}
@Override
public Map<String, List<String>> readTaskDataValueHashMapByTaskInstanceIDsAndKey(List<String> taskInstanceIDs, String key) throws TaskDataServiceException {
if (taskInstanceIDs == null) {
throw new TaskDataServiceException(TIDS_NULL_ERROR);
}
if (key == null) {
throw new TaskDataServiceException(KEY_NULL_ERROR);
}
Map<String, List<String>> taskDatasMap = new HashMap<String, List<String>>();
if (!taskInstanceIDs.isEmpty()) {
StringBuilder in = new StringBuilder(MessageFormat.format(SQL_VALUE_WITH_COMMA, taskInstanceIDs.get(0).toLowerCase()));
for (int i = 1; i < taskInstanceIDs.size(); i++) {
in.append(MessageFormat.format(SQL_COMMA_VALUE_WITH_COMMA, taskInstanceIDs.get(i).toLowerCase()));
}
String jpql = MessageFormat.format(SQL_READ_TASK_DATA_BY_TID_LIST, in);
SimpleLogger.trace(Severity.DEBUG, logger, jpql);
Query query = em.createQuery(jpql);
List<TaskDataEntry> resultList = query.getResultList();
for (TaskDataEntry taskDataEntry : resultList) {
try {
DataPairs entryTaskDataPairs;
entryTaskDataPairs = TaskDataDto.unmarshallContent(taskDataEntry.getContent());
List<DataPair> entryTaskDataPair = entryTaskDataPairs.getDataPair();
Map<String, List<String>> taskDataMap = taskDataPairToHashMap(entryTaskDataPair);
taskDatasMap.put(taskDataEntry.getTaskInstanceID(), (taskDataMap.containsKey(key)) ? taskDataMap.get(key) : null);
} catch (JAXBException e) {
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
}
}
}
return taskDatasMap;
}
@Override
public Map<String, List<String>> readTaskDataValueHashMapByTaskInstanceIDsAndKey(List<String> taskInstanceIDs, TaskDataConstants key) throws TaskDataServiceException {
if (taskInstanceIDs == null) {
throw new TaskDataServiceException(TIDS_NULL_ERROR);
}
if (key == null) {
throw new TaskDataServiceException(KEY_NULL_ERROR);
}
return readTaskDataValueHashMapByTaskInstanceIDsAndKey(taskInstanceIDs, key.toString());
}
@Override
public Map<String, Map<String, List<String>>> readTaskDataHashMapByTaskInstanceIDs(List<String> taskInstanceIDs) throws TaskDataServiceException {
if (taskInstanceIDs == null) {
throw new TaskDataServiceException(TIDS_NULL_ERROR);
}
Map<String, Map<String, List<String>>> taskDatasMap = new HashMap<String, Map<String, List<String>>>();
StringBuilder in = new StringBuilder(MessageFormat.format(SQL_VALUE_WITH_COMMA, taskInstanceIDs.get(0).toLowerCase()));
for (int i = 1; i < taskInstanceIDs.size(); i++) {
in.append(MessageFormat.format(SQL_COMMA_VALUE_WITH_COMMA, taskInstanceIDs.get(i).toLowerCase()));
}
String jpql = MessageFormat.format(SQL_READ_TASK_DATA_BY_TID_LIST, in);
SimpleLogger.trace(Severity.DEBUG, logger, jpql);
Query query = em.createQuery(jpql);
List<TaskDataEntry> resultList = query.getResultList();
for (TaskDataEntry taskDataEntry : resultList) {
try {
Map<String, List<String>> taskDataMap = new HashMap<String, List<String>>();
DataPairs entryTaskDataPairs;
entryTaskDataPairs = TaskDataDto.unmarshallContent(taskDataEntry.getContent());
List<DataPair> entryTaskDataPair = entryTaskDataPairs.getDataPair();
taskDataMap = taskDataPairToHashMap(entryTaskDataPair);
taskDatasMap.put(taskDataEntry.getTaskInstanceID(), taskDataMap);
} catch (JAXBException e) {
SimpleLogger.trace(Severity.INFO, logger, STANDARD_ERROR, e);
}
}
return taskDatasMap;
}
@Override
public boolean deleteTaskDataByTaskInstanceIDs(List<String> taskInstanceIDs) throws TaskDataServiceException {
if (taskInstanceIDs == null) {
throw new TaskDataServiceException(TIDS_NULL_ERROR);
}
StringBuilder in = new StringBuilder(MessageFormat.format(SQL_VALUE_WITH_COMMA, taskInstanceIDs.get(0).toLowerCase()));
for (int i = 1; i < taskInstanceIDs.size(); i++) {
in.append(MessageFormat.format(SQL_COMMA_VALUE_WITH_COMMA, taskInstanceIDs.get(i).toLowerCase()));
}
String jpql = MessageFormat.format(SQL_DELETE_TASK_DATA_BY_TID_LIST, in);
SimpleLogger.trace(Severity.DEBUG, logger, jpql);
Query query = em.createQuery(jpql);
try {
query.executeUpdate();
return true;
} catch (IllegalStateException e) {
throw new TaskDataServiceException(e);
}
}
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
15 | |
14 | |
13 | |
10 | |
9 | |
9 | |
8 | |
7 | |
7 | |
7 |