/* Date: May 15, 2009
* Template: PluginScreenJavaTemplateGen.java.ftl
* generator: org.molgenis.generators.screen.PluginScreenJavaTemplateGen 3.3.0-testing
*
* THIS FILE IS A TEMPLATE. PLEASE EDIT :-)
*/
package plugins.help.duplicates;
import java.util.ArrayList;
import org.molgenis.framework.db.Database;
import org.molgenis.framework.db.DatabaseException;
import org.molgenis.framework.ui.PluginModel;
import org.molgenis.framework.ui.ScreenController;
import org.molgenis.util.Entity;
import org.molgenis.util.Tuple;
import decorators.NameConvention;
public class DuplicatesPlugin extends PluginModel<Entity>
{
private static final long serialVersionUID = 3285351881759871383L;
public String input;
public String output;
// public String unique;
public String getInput()
{
return input;
}
public void setInput(String input)
{
this.input = input;
}
public String getOutput()
{
return output;
}
public void setOutput(String output)
{
this.output = output;
}
// public String getUnique() {
// return unique;
// }
//
// public void setUnique(String unique) {
// this.unique = unique;
// }
public DuplicatesPlugin(String name, ScreenController<?> parent)
{
super(name, parent);
}
@Override
public String getViewName()
{
return "plugins_help_duplicates_DuplicatesPlugin";
}
@Override
public String getViewTemplate()
{
return "plugins/help/duplicates/DuplicatesPlugin.ftl";
}
public static ArrayList<String> renameDuplicates(ArrayList<String> inputs)
{
ArrayList<String> out = new ArrayList<String>();
for (String s : inputs)
{
if (out.contains(s))
{
boolean highestDupFound = false;
int dupNumber = 1;
while (!highestDupFound)
{
if (out.contains(s + "_DUP" + dupNumber))
{
dupNumber++;
}
else
{
out.add(s + "_DUP" + (dupNumber));
highestDupFound = true;
}
}
}
else
{
out.add(s);
}
}
return out;
}
@Override
public void handleRequest(Database db, Tuple request)
{
if (request.getString("__action") != null)
{
if (request.getString("__action").equals("convertNames"))
{
String rawInput = request.getString("input");
if (rawInput != null)
{
this.setInput(rawInput);
String[] split = rawInput.split("\\r?\\n");
output = "";
ArrayList<String> inputs = new ArrayList<String>();
for (String s : split)
{
if (s.length() != 0)
{
s = s.trim();
try
{
s = NameConvention.escapeEntityNameStrict(s);
}
catch (DatabaseException e)
{
e.printStackTrace();
}
inputs.add(s);
}
}
ArrayList<String> outputs = renameDuplicates(inputs);
for (String s : outputs)
{
output += s + "\n";
}
this.setOutput(output);
}
else
{
this.setInput(null);
this.setOutput(null);
}
}
else if (request.getString("__action").equals("loadExample"))
{
this.setInput(example());
}
else if (request.getString("__action").equals("clear"))
{
this.setInput(null);
this.setOutput(null);
}
}
}
private String example()
{
String example = "At5g44840\n";
example += "At1g31870\n";
example += "At4g36730\n";
example += "At1g31870\n";
example += "At5g44840\n";
example += "At1g31870\n";
example += "At4g36730\n";
example += "At5g44840\n";
example += "At5g44840\n";
example += "At1g63660\n";
example += "At4g24220\n";
example += "At5g44840\n";
return example;
}
@Override
public void reload(Database db)
{
}
}