Changeset 4362


Ignore:
Timestamp:
Jul 1, 2008, 4:30:32 PM (15 years ago)
Author:
Jari Häkkinen
Message:

Fixes #1074.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.7-stable/src/plugins/core/net/sf/basedb/plugins/Base1PluginExecuter.java

    r4266 r4362  
    127127import java.util.TreeMap;
    128128import java.util.regex.Pattern;
     129import java.util.regex.Matcher;
    129130
    130131/**
     
    843844      Boolean mergeReporters = (Boolean) configuration.getValue(geneAveragesParameter.getName());
    844845     
     846      TreeMap<String, JobParameter> base1parametertype = getJobParameterObjectsFromXML(String.valueOf(configuration.getValue(jobParametersParameter.getName())), true);
    845847      ListMap<String, String> parameters = new ListMap<String, String>();
    846848      for (PluginParameter<?> pp : getJobParametersFromXML(String.valueOf(configuration.getValue(jobParametersParameter.getName())), true))
     
    848850        String name = pp.getName();
    849851        Object value = job.getValue(name);
    850         parameters.put(name, value == null ? "" : value.toString());
     852        String valueString = (value == null) ? "" : value.toString();
     853        JobParameter jp=base1parametertype.get(name);
     854        // replacing line breaks for Base1 TEXT and STRING types
     855        if (jp.getType() == Base1JobParameterType.STRING ||
     856            jp.getType() == Base1JobParameterType.TEXT)
     857        {
     858          Pattern p=Pattern.compile("\r");
     859          Matcher m=p.matcher(valueString);
     860          valueString = m.replaceAll("\\\\r");
     861          m.usePattern(Pattern.compile("\n"));
     862          m.reset(valueString);
     863          valueString = m.replaceAll("\\\\n");
     864        }
     865        parameters.put(name, valueString);
    851866      }
    852867     
     
    10101025    return headers;
    10111026  }
    1012  
    1013  
     1027
     1028
    10141029  @SuppressWarnings({ "unchecked", "serial" })
    1015   private List<PluginParameter<?>> getJobParametersFromXML(String xml, boolean hideRemoved)
     1030  private TreeMap<String, JobParameter>
     1031    getJobParameterObjectsFromXML(String xml, boolean hideRemoved)
    10161032  {
    10171033    try
     
    10311047        }
    10321048      });
    1033      
    1034       TreeMap<Integer, PluginParameter<?>> positionParameter = new TreeMap<Integer, PluginParameter<?>>();
     1049
     1050      TreeMap<String, JobParameter> pars= new TreeMap<String, JobParameter>();
    10351051      while (it.hasNext())
    10361052      {
     
    10391055        if (!jp.isRemoved())
    10401056        {
     1057          if (pars.containsKey(jp.getName()))
     1058          {
     1059            throw new BaseException("Duplicate parameter at position "+jp.getPosition());
     1060          }
     1061          pars.put(jp.getName(), jp);
     1062        }
     1063      }
     1064      return pars;
     1065    }
     1066    catch (JDOMException e1)
     1067    {
     1068      throw new BaseException(e1.getCause());
     1069    }
     1070    catch (IOException e1)
     1071    {
     1072      throw new BaseException(e1);
     1073    }
     1074  }
     1075
     1076
     1077  @SuppressWarnings({ "unchecked", "serial" })
     1078  private List<PluginParameter<?>> getJobParametersFromXML(String xml, boolean hideRemoved)
     1079  {
     1080    try
     1081    {
     1082      String doctype = "<!DOCTYPE jobparameters SYSTEM \"base1-plugin-configuration-file.dtd\">";
     1083      Document doc = XMLUtil.getValidatedXml(doctype+xml, dtdFile);
     1084      Iterator<Element> it = doc.getDescendants(new Filter()
     1085      {
     1086        public boolean matches(Object o)
     1087        {
     1088          if (o instanceof Element)
     1089          {
     1090            Element e = (Element) o;
     1091            return e.getName().equals("parameter");
     1092          }
     1093          return false;
     1094        }
     1095      });
     1096     
     1097      TreeMap<Integer, PluginParameter<?>> positionParameter = new TreeMap<Integer, PluginParameter<?>>();
     1098      while (it.hasNext())
     1099      {
     1100        Element e = it.next();
     1101        JobParameter jp = new JobParameter(e);
     1102        if (!jp.isRemoved())
     1103        {
    10411104          if (positionParameter.containsKey(jp.getPosition()))
    10421105          {
     
    10571120    }
    10581121  }
    1059  
    1060  
     1122
     1123
    10611124  /**
    10621125    Creates a boolean from a string.
Note: See TracChangeset for help on using the changeset viewer.