package husacct.define.domain.conventions_checker; import husacct.ServiceProvider; import husacct.define.domain.module.ModuleStrategy; import husacct.define.domain.module.modules.Layer; import husacct.define.domain.services.ModuleDomainService; import java.util.ArrayList; public class LayerCheckerHelper { private String errorMessage; private ArrayList<Layer> layers; public LayerCheckerHelper(ModuleStrategy moduleFrom) { //layers = new ArrayList<Layer>(); //fillLayerList(moduleFrom); setErrorMessage(""); } public boolean checkTypeIsLayer(ModuleStrategy module) { if (module.getType().equals("Layer")) { return true; } else { setErrorMessage(ServiceProvider.getInstance().getLocaleService() .getTranslatedString("RuleOnlyForLayers")); return false; } } public void fillLayerList(ModuleStrategy moduleFrom) { ArrayList<ModuleStrategy> currentModules = getCurrentModules(moduleFrom); for (ModuleStrategy module : currentModules) { if (module instanceof Layer) { layers.add((Layer) module); } } } public ArrayList<ModuleStrategy> getBackCallLayers(long moduleFromId) { ArrayList<ModuleStrategy> backCallLayers = new ArrayList<ModuleStrategy>(); long firstBackCallLayerId = getPreviousLayerId(moduleFromId); if (firstBackCallLayerId != -1L) { for (Layer layer : layers) { backCallLayers.add(layer); ArrayList<ModuleStrategy> subModules = layer.getSubModules(); for(ModuleStrategy module : subModules) { backCallLayers.add(module); } if (layer.getId() == firstBackCallLayerId) { break; } } } return backCallLayers; } private ArrayList<ModuleStrategy> getCurrentModules(ModuleStrategy moduleFrom) { ModuleDomainService moduleService =new ModuleDomainService(); return moduleService.getSortedModules(); } public String getErrorMessage() { return errorMessage; } public long getFirstSkipCallLayer(long moduleFromId) { long nextLayerId = getNextLayerId(moduleFromId); long layerSkipperToId = getNextLayerId(nextLayerId); return layerSkipperToId; } public ModuleStrategy getLayerById(long layerId) { Layer returnLayer = new Layer(); for (Layer layer : layers) { if (layer.getId() == layerId) { returnLayer = layer; } } return returnLayer; } public long getNextLayerId(long currentLayerId) { int index = 0; while (index != layers.size()) { Layer layer = layers.get(index); if (layer.getId() == currentLayerId && index != layers.size() - 1) { return layers.get(index + 1).getId(); } index++; } return -1L; } public long getPreviousLayerId(long currentLayerId) { int index = 0; while (index != layers.size()) { Layer layer = layers.get(index); if (layer.getId() == currentLayerId && index != 0) { return layers.get(index - 1).getId(); } index++; } return -1L; } public ArrayList<ModuleStrategy> getSkipCallLayers(long moduleFromId) { ArrayList<ModuleStrategy> skipCallLayers = new ArrayList<ModuleStrategy>(); long firstSkipCallLayerId = getFirstSkipCallLayer(moduleFromId); boolean getLayers = false; for (Layer layer : layers) { if (layer.getId() == firstSkipCallLayerId) { getLayers = true; } if (getLayers) { skipCallLayers.add(layer); ArrayList<ModuleStrategy> subModules = layer.getSubModules(); for(ModuleStrategy module : subModules) { skipCallLayers.add(module); } } } return skipCallLayers; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } }