package es.upm.fi.dia.oeg.map4rdf.server.command; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import com.google.inject.Inject; import es.upm.fi.dia.oeg.map4rdf.client.action.GetAllConfigurationsDescription; import es.upm.fi.dia.oeg.map4rdf.client.action.GetAllConfigurationsDescriptionResult; import es.upm.fi.dia.oeg.map4rdf.server.conf.Constants; import es.upm.fi.dia.oeg.map4rdf.server.conf.multiple.MultipleConfigurations; import es.upm.fi.dia.oeg.map4rdf.share.conf.ParameterNames; import es.upm.fi.dia.oeg.map4rdf.share.conf.util.ConfigurationDescription; import net.customware.gwt.dispatch.server.ActionHandler; import net.customware.gwt.dispatch.server.ExecutionContext; import net.customware.gwt.dispatch.shared.DispatchException; public class GetAllConfigurationsDescriptionsHandler implements ActionHandler<GetAllConfigurationsDescription,GetAllConfigurationsDescriptionResult>{ private MultipleConfigurations configurations; private Logger logger = Logger.getLogger(GetAllConfigurationsDescriptionsHandler.class); @Inject public GetAllConfigurationsDescriptionsHandler(MultipleConfigurations configurations){ this.configurations=configurations; } @Override public Class<GetAllConfigurationsDescription> getActionType() { return GetAllConfigurationsDescription.class; } @Override public GetAllConfigurationsDescriptionResult execute( GetAllConfigurationsDescription action, ExecutionContext context) throws DispatchException { List<ConfigurationDescription> toReturn = new ArrayList<ConfigurationDescription>(); for(String id: configurations.getConfigurationIDs()){ ConfigurationDescription toAdd = new ConfigurationDescription(id); addDescriptions(toAdd); addLabels(toAdd); addImage(toAdd); toReturn.add(toAdd); } return new GetAllConfigurationsDescriptionResult(toReturn); } private void addImage(ConfigurationDescription configDescription) { if(configurations.getConfiguration(configDescription.getId()).containsConfigurationParam(ParameterNames.CONFIGURATION_IMAGE)){ String image = configurations.getConfiguration(configDescription.getId()).getConfigurationParamValue(ParameterNames.CONFIGURATION_IMAGE); configDescription.setImage(Constants.DESCIPTIONS_LOGOS_FOLDER+image); } } private void addLabels(ConfigurationDescription configDescription) { if(configurations.getConfiguration(configDescription.getId()).containsConfigurationParam(ParameterNames.CONFIGURATION_LABELS)){ String totalDescription = configurations.getConfiguration(configDescription.getId()).getConfigurationParamValue(ParameterNames.CONFIGURATION_LABELS); String [] splitDescriptions = totalDescription.split(";"); if(splitDescriptions.length > 1){ for(String eachDescription:splitDescriptions){ String[] splitDescription = eachDescription.split("@"); if(splitDescription.length == 2){ configDescription.addLabel(splitDescription[1], splitDescription[0]); }else if(splitDescription.length == 1){ configDescription.addLabel("", eachDescription); }else{ logger.warn("Bad Label: \""+eachDescription+"\" in config id: "+configDescription.getId()); } } }else{ configDescription.addLabel("", totalDescription); } } } private void addDescriptions(ConfigurationDescription configDescription){ if(configurations.getConfiguration(configDescription.getId()).containsConfigurationParam(ParameterNames.CONFIGURATION_DESCRIPTION)){ String totalDescription = configurations.getConfiguration(configDescription.getId()).getConfigurationParamValue(ParameterNames.CONFIGURATION_DESCRIPTION); String [] splitDescriptions = totalDescription.split(";"); if(splitDescriptions.length > 1){ for(String eachDescription:splitDescriptions){ String[] splitDescription = eachDescription.split("@"); if(splitDescription.length == 2){ configDescription.addDescription(splitDescription[1], splitDescription[0]); }else if(splitDescription.length == 1){ configDescription.addDescription("", eachDescription); }else{ logger.warn("Bad description: \""+eachDescription+"\" in config id: "+configDescription.getId()); } } }else{ configDescription.addDescription("", totalDescription); } } } @Override public void rollback(GetAllConfigurationsDescription action, GetAllConfigurationsDescriptionResult result, ExecutionContext context) throws DispatchException { // Nothing to do } }