package net.codjo.dataprocess.common.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
*/
public class ExecutionListParamExport {
private String name;
private List<Family> familyList = new ArrayList<Family>();
public ExecutionListParamExport(String name,
List<ExecutionListModel> listModel,
Map<String, String> familyMap) {
this.name = name;
Collections.sort(listModel, ExecutionListModel.getPriorityComparator());
for (ExecutionListModel executionListModel : listModel) {
String familyName = familyMap.get(String.valueOf(executionListModel.getFamilyId()));
Family family = getFamily(familyName);
family.addExecutionListModel(executionListModel);
}
}
public void updateExecutionListFamilyId(Map<String, String> familyMap) {
Map<String, String> reverseFamilyMap = new HashMap<String, String>();
for (Map.Entry<String, String> entry : familyMap.entrySet()) {
reverseFamilyMap.put(entry.getValue(), entry.getKey());
}
for (Family family : familyList) {
String familyId = reverseFamilyMap.get(family.getName());
if (familyId != null) {
for (ExecutionListModel executionListModel : family.getExecutionListModelList()) {
executionListModel.setFamilyId(Integer.parseInt(familyId));
}
}
}
}
private Family getFamily(String familyName) {
for (Family family : familyList) {
if (family.getName().equals(familyName)) {
return family;
}
}
Family family = new Family(familyName);
familyList.add(family);
return family;
}
public String getName() {
return name;
}
public List<Family> getFamilyList() {
return familyList;
}
public static class Family {
private String name;
private List<ExecutionListModel> executionListModelList = new ArrayList<ExecutionListModel>();
private Family(String familyName) {
this.name = familyName;
}
public String getName() {
return name;
}
public void addExecutionListModel(ExecutionListModel executionListModel) {
executionListModel.setPriority(executionListModelList.size() + 1);
executionListModelList.add(executionListModel);
}
public List<ExecutionListModel> getExecutionListModelList() {
return executionListModelList;
}
}
}