Java tutorial
package es.uvigo.ei.sing.alter.web; /* * This file is part of ALTER. * * ALTER is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ALTER is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see <http://www.gnu.org/licenses/>. */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.StringWriter; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.IOUtils; import org.zkoss.util.media.Media; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.UploadEvent; import org.zkoss.zul.Button; import org.zkoss.zul.Center; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Filedownload; import org.zkoss.zul.Html; import org.zkoss.zul.Label; import org.zkoss.zul.Listbox; import org.zkoss.zul.Listitem; import org.zkoss.zul.Messagebox; import org.zkoss.zul.North; import org.zkoss.zul.SimpleListModel; import org.zkoss.zul.Spinner; import org.zkoss.zul.Textbox; import org.zkoss.zul.Window; import es.uvigo.ei.sing.alter.converter.DefaultFactory; import es.uvigo.ei.sing.alter.converter.Factory; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.reader.Reader; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.writer.Writer; public class Controller extends Window { Logger logger; MSA msa; String ext = ""; boolean collapsed; String filename = ""; StringBuffer inputText = new StringBuffer(20000); StringBuffer outputText = new StringBuffer(20000); final int maxChars = 20000; public Controller() { super(); } public Controller(String title, String border, boolean closable) { super(title, border, closable); } public void setInputText(String s) { inputText = new StringBuffer(s); } public void load(UploadEvent event) throws InterruptedException { Textbox input = (Textbox) getFellow("input"); Media media = event.getMedia(); String text = ""; if (media != null) { filename = media.getName(); if (media.isBinary()) if (media.inMemory()) { StringBuffer buffer = new StringBuffer(); byte[] bytes = media.getByteData(); for (int i = 0; i < bytes.length; i++) buffer.append((char) bytes[i]); text = buffer.toString(); } else { StringWriter writer = new StringWriter(); try { IOUtils.copy(media.getStreamData(), writer); } catch (IOException ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } text = writer.toString(); } else if (media.inMemory()) text = media.getStringData(); else { StringWriter writer = new StringWriter(); try { IOUtils.copy(media.getReaderData(), writer); } catch (IOException ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } text = writer.toString(); } } inputText = new StringBuffer(text); if (text.length() < maxChars) input.setRawValue(text); else { input.setRawValue(inputText.substring(0, maxChars)); Messagebox.show( "The complete input text is not being displayed due to its length. Text edition will be disabled to avoid erros in data.", "Input text too long", Messagebox.OK, Messagebox.INFORMATION); } input.setFocus(true); read(); } public void save() { String out = outputText.toString(); Listitem outputOSItem = ((Listbox) getFellow("outputOS")).getSelectedItem(); if (outputOSItem == null) outputOSItem = ((Listbox) getFellow("outputOS")).getItemAtIndex(0); String outputOS = (String) outputOSItem.getValue(); String name; if (filename.isEmpty()) name = "convertedmsa"; else name = filename + ".alter"; if (collapsed) name += ".haps"; if (ext.equals("ALN")) name += ".aln"; else if (ext.equals("FASTA")) name += ".fas"; else if (ext.equals("GDE")) name += ".gde"; else if (ext.equals("MEGA")) name += ".meg"; else if (ext.equals("MSF")) name += ".msf"; else if (ext.equals("NEXUS")) name += ".nex"; else if (ext.equals("PHYLIP")) name += ".phy"; else if (ext.equals("PIR")) name += ".pir"; if (outputOS.equals("Linux")) Filedownload.save(out, null, name); else if (outputOS.equals("MacOS")) Filedownload.save(out.replace("\n", "\r"), null, name); else Filedownload.save(out.replace("\n", "\r\n"), null, name); } public void onAutodetectCheck() { boolean autodetect = ((Checkbox) getFellow("autodetect")).isChecked(); Listbox inputOS = (Listbox) getFellow("inputOS"); Label inputOSLabel = (Label) getFellow("inputOSLabel"); Html andLoad = (Html) getFellow("andLoad"); Button load = (Button) getFellow("load"); Listbox inputProgram = (Listbox) getFellow("inputProgram"); Label inputProgramLabel = (Label) getFellow("inputProgramLabel"); Listbox inputFormat = (Listbox) getFellow("inputFormat"); Html andInputFormat = (Html) getFellow("andInputFormat"); Label inputFormatLabel = (Label) getFellow("inputFormatLabel"); Textbox input = (Textbox) getFellow("input"); Center step2 = (Center) getFellow("step2"); Html orPaste = (Html) getFellow("orPaste"); Label pasteLabel = (Label) getFellow("pasteLabel"); Button paste = (Button) getFellow("paste"); if (autodetect) { inputProgram.setSelectedIndex(0); inputProgram.setDisabled(true); inputProgramLabel.setSclass("gray"); inputFormat.setSelectedIndex(0); inputFormat.setDisabled(true); andInputFormat.setSclass("gray"); inputFormatLabel.setSclass("gray"); input.setDisabled(false); step2.setZclass("step2"); orPaste.setSclass("black"); pasteLabel.setSclass("black"); paste.setDisabled(false); inputOS.setDisabled(false); inputOSLabel.setSclass("black"); andLoad.setSclass("black"); load.setDisabled(false); } else { inputProgram.setDisabled(false); inputProgramLabel.setSclass("black"); inputOS.setSelectedIndex(0); inputOS.setDisabled(true); inputOSLabel.setSclass("gray"); andLoad.setSclass("gray"); load.setDisabled(true); input.setDisabled(true); step2.setZclass("step2bw"); orPaste.setSclass("gray"); pasteLabel.setSclass("gray"); paste.setDisabled(true); } } public void onInputProgramSelect() { Listbox inputProgram = (Listbox) getFellow("inputProgram"); Listbox inputFormat = ((Listbox) getFellow("inputFormat")); Html andInputFormat = (Html) getFellow("andInputFormat"); Label inputFormatLabel = (Label) getFellow("inputFormatLabel"); if (inputProgram.getSelectedItem() != null) { String program = ((Listbox) getFellow("inputProgram")).getSelectedItem().getLabel(); if (!program.equals("<select>")) { if (program.equals("Clustal")) inputFormat.setModel(new SimpleListModel( new String[] { "<select>", "ALN", "FASTA", "GDE", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MAFFT")) inputFormat.setModel(new SimpleListModel(new String[] { "<select>", "ALN", "FASTA" })); else if (program.equals("MUSCLE")) inputFormat.setModel( new SimpleListModel(new String[] { "<select>", "ALN", "FASTA", "MSF", "PHYLIP" })); else if (program.equals("PROBCONS")) inputFormat.setModel(new SimpleListModel(new String[] { "<select>", "ALN", "FASTA" })); else if (program.equals("TCoffee")) inputFormat.setModel(new SimpleListModel( new String[] { "<select>", "ALN", "FASTA", "MSF", "PHYLIP", "PIR" })); inputFormat.setDisabled(false); andInputFormat.setSclass("black"); inputFormatLabel.setSclass("black"); onInputFormatSelect(); } else { inputFormat.setSelectedIndex(0); inputFormat.setDisabled(true); andInputFormat.setSclass("gray"); inputFormatLabel.setSclass("gray"); onInputFormatSelect(); } } else { inputFormat.setSelectedIndex(0); inputFormat.setDisabled(true); andInputFormat.setSclass("gray"); inputFormatLabel.setSclass("gray"); onInputFormatSelect(); } } public void onInputFormatSelect() { Listbox inputFormat = (Listbox) getFellow("inputFormat"); Listbox inputOS = (Listbox) getFellow("inputOS"); Label inputOSLabel = (Label) getFellow("inputOSLabel"); Html andLoad = (Html) getFellow("andLoad"); Button load = (Button) getFellow("load"); Textbox input = (Textbox) getFellow("input"); Center step2 = (Center) getFellow("step2"); Html orPaste = (Html) getFellow("orPaste"); Label pasteLabel = (Label) getFellow("pasteLabel"); Button paste = (Button) getFellow("paste"); if (inputFormat.getSelectedItem() != null) if (!inputFormat.getSelectedItem().getLabel().equals("<select>")) { inputOS.setDisabled(false); inputOSLabel.setSclass("black"); andLoad.setSclass("black"); load.setDisabled(false); input.setDisabled(false); step2.setZclass("step2"); orPaste.setSclass("black"); pasteLabel.setSclass("black"); paste.setDisabled(false); } else { inputOS.setSelectedIndex(0); inputOS.setDisabled(true); inputOSLabel.setSclass("gray"); andLoad.setSclass("gray"); load.setDisabled(true); input.setDisabled(true); step2.setZclass("step2bw"); orPaste.setSclass("gray"); pasteLabel.setSclass("gray"); paste.setDisabled(true); } else { inputOS.setSelectedIndex(0); inputOS.setDisabled(true); inputOSLabel.setSclass("gray"); andLoad.setSclass("gray"); load.setDisabled(true); input.setDisabled(true); step2.setZclass("step2bw"); orPaste.setSclass("gray"); pasteLabel.setSclass("gray"); paste.setDisabled(true); } } public void onCollapseCheck() { boolean collapse = ((Checkbox) getFellow("collapse")).isChecked(); Spinner limit = (Spinner) getFellow("limit"); Label limitLabel = (Label) getFellow("limitLabel"); Checkbox gapsAsMissing = (Checkbox) getFellow("gapsAsMissing"); Checkbox countMissing = (Checkbox) getFellow("countMissing"); if (collapse) { limit.setDisabled(false); limitLabel.setSclass("black"); gapsAsMissing.setDisabled(false); gapsAsMissing.setSclass("black"); countMissing.setDisabled(false); countMissing.setSclass("black"); } else { limit.setDisabled(true); limitLabel.setSclass("gray"); gapsAsMissing.setDisabled(true); gapsAsMissing.setSclass("gray"); countMissing.setDisabled(true); countMissing.setSclass("gray"); } } public void onOutputProgramSelect() { Listbox outputFormat = (Listbox) getFellow("outputFormat"); Html andOutputFormat = (Html) getFellow("andOutputFormat"); Label outputFormatLabel = (Label) getFellow("outputFormatLabel"); Listbox outputProgram = (Listbox) getFellow("outputProgram"); if (outputProgram.getSelectedItem() != null) { String program = outputProgram.getSelectedItem().getLabel(); if (!program.equals("<select>")) { program = program.substring(4); if (program.equals("General")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "ALN", "FASTA", "GDE", "MEGA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("jModelTest")) outputFormat.setModel(new SimpleListModel( new String[] { "<select>", "ALN", "FASTA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MrBayes")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "NEXUS" })); else if (program.equals("PAML")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "NEXUS", "PHYLIP" })); else if (program.equals("PAUP")) outputFormat.setModel(new SimpleListModel( new String[] { "<select>", "MEGA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("PhyML")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "PHYLIP" })); else if (program.equals("ProtTest")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "NEXUS", "PHYLIP" })); else if (program.equals("RAxML")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "PHYLIP" })); else if (program.equals("RAxML")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "NEXUS", "PHYLIP" })); else if (program.equals("TCS")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "NEXUS", "PHYLIP" })); else if (program.equals("CodABC")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "PHYLIP" })); else if (program.equals("BioEdit")) outputFormat.setModel(new SimpleListModel( new String[] { "<select>", "ALN", "FASTA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MEGA")) outputFormat.setModel(new SimpleListModel( new String[] { "<select>", "ALN", "FASTA", "MEGA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("dnaSP")) outputFormat.setModel(new SimpleListModel( new String[] { "<select>", "FASTA", "MEGA", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("Se-Al")) outputFormat.setModel(new SimpleListModel( new String[] { "<select>", "FASTA", "GDE", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("Mesquite")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "NEXUS" })); else if (program.equals("SplitsTree")) outputFormat.setModel( new SimpleListModel(new String[] { "<select>", "ALN", "FASTA", "NEXUS", "PHYLIP" })); else if (program.equals("Clustal")) outputFormat.setModel( new SimpleListModel(new String[] { "<select>", "ALN", "FASTA", "GDE", "MSF", "PIR" })); else if (program.equals("MAFFT")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "FASTA" })); else if (program.equals("MUSCLE")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "FASTA" })); else if (program.equals("PROBCONS")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "FASTA" })); else if (program.equals("TCoffee")) outputFormat.setModel( new SimpleListModel(new String[] { "<select>", "ALN", "FASTA", "MSF", "PIR" })); else if (program.equals("Gblocks")) outputFormat.setModel(new SimpleListModel(new String[] { "<select>", "FASTA", "PIR" })); else if (program.equals("SeaView")) outputFormat.setModel(new SimpleListModel( new String[] { "<select>", "ALN", "FASTA", "MSF", "NEXUS", "PHYLIP" })); else if (program.equals("trimAl")) outputFormat.setModel(new SimpleListModel( new String[] { "<select>", "ALN", "FASTA", "MEGA", "NEXUS", "PHYLIP", "PIR" })); outputFormat.setDisabled(false); andOutputFormat.setSclass("black"); outputFormatLabel.setSclass("black"); onOutputFormatSelect(); } else { outputFormat.setSelectedIndex(0); outputFormat.setDisabled(true); andOutputFormat.setSclass("gray"); outputFormatLabel.setSclass("gray"); onOutputFormatSelect(); } } else { outputFormat.setSelectedIndex(0); outputFormat.setDisabled(true); andOutputFormat.setSclass("gray"); outputFormatLabel.setSclass("gray"); onOutputFormatSelect(); } } public void onOutputFormatSelect() { String program = ((Listbox) getFellow("outputProgram")).getSelectedItem().getLabel().substring(4); Checkbox residueNumbers = (Checkbox) getFellow("numbers"); Checkbox sequential = (Checkbox) getFellow("sequential"); Checkbox match = (Checkbox) getFellow("match"); Checkbox lowerCase = (Checkbox) getFellow("lower"); Checkbox collapse = (Checkbox) getFellow("collapse"); Button convert = (Button) getFellow("convert"); Html andConvert = (Html) getFellow("andConvert"); String format; if (((Listbox) getFellow("outputFormat")).getSelectedItem() == null) format = "<select>"; else format = ((Listbox) getFellow("outputFormat")).getSelectedItem().getLabel(); if (!format.equals("<select>")) { //Lower case lowerCase.setDisabled(false); lowerCase.setSclass("black"); //Collapse collapse.setDisabled(false); collapse.setSclass("black"); onCollapseCheck(); //Convert button convert.setDisabled(false); andConvert.setSclass("black"); //Residue numbers checkbox if (format.equals("ALN")) { residueNumbers.setDisabled(false); residueNumbers.setSclass("black"); } else { residueNumbers.setChecked(false); residueNumbers.setDisabled(true); residueNumbers.setSclass("gray"); } //Sequential checkbox if (format.equals("PHYLIP")) { if (program.equals("TCS")) { sequential.setChecked(true); sequential.setDisabled(true); sequential.setSclass("gray"); } else if (program.equals("CodABC")) { sequential.setChecked(true); sequential.setDisabled(true); sequential.setSclass("gray"); } else if (program.equals("SeaView")) { sequential.setChecked(false); sequential.setDisabled(true); sequential.setSclass("gray"); } else { sequential.setDisabled(false); sequential.setSclass("black"); } } else if (format.equals("NEXUS")) { if (program.equals("PAML") || program.equals("ProtTest") || program.equals("TCS")) { sequential.setChecked(true); sequential.setDisabled(true); sequential.setSclass("gray"); } else if (program.equals("MEGA") || program.equals("trimAl")) { sequential.setChecked(false); sequential.setDisabled(true); sequential.setSclass("gray"); } else { sequential.setDisabled(false); sequential.setSclass("black"); } } else { sequential.setChecked(false); sequential.setDisabled(true); sequential.setSclass("gray"); } //Match checkbox if (format.equals("MSF") || program.equals("MrBayes") || program.equals("SplitsTree") || program.equals("Clustal") || program.equals("MAFFT") || program.equals("Gblocks") || (program.equals("dnaSP") && format.equals("NEXUS"))) { match.setChecked(false); match.setDisabled(true); match.setSclass("gray"); } else { match.setDisabled(false); match.setSclass("black"); } } else { lowerCase.setDisabled(true); lowerCase.setSclass("gray"); match.setDisabled(true); match.setSclass("gray"); residueNumbers.setDisabled(true); residueNumbers.setSclass("gray"); sequential.setDisabled(true); sequential.setSclass("gray"); collapse.setDisabled(true); collapse.setSclass("gray"); ((Spinner) getFellow("limit")).setDisabled(true); ((Label) getFellow("limitLabel")).setSclass("gray"); ((Checkbox) getFellow("gapsAsMissing")).setDisabled(true); ((Checkbox) getFellow("gapsAsMissing")).setSclass("gray"); ((Checkbox) getFellow("countMissing")).setDisabled(true); ((Checkbox) getFellow("countMissing")).setSclass("gray"); convert.setDisabled(true); andConvert.setSclass("gray"); } } public void convert() throws InterruptedException { boolean collapse = ((Checkbox) getFellow("collapse")).isChecked(); boolean gapsAsMissing = ((Checkbox) getFellow("gapsAsMissing")).isChecked(); boolean countMissing = ((Checkbox) getFellow("countMissing")).isChecked(); int limit = ((Spinner) getFellow("limit")).getValue().intValue(); String out = ""; String outO = "Linux"; String outP = ((Listbox) getFellow("outputProgram")).getSelectedItem().getLabel().substring(4); String outF = ((Listbox) getFellow("outputFormat")).getSelectedItem().getLabel(); ext = outF; boolean lower = ((Checkbox) getFellow("lower")).isChecked(); boolean numbers = ((Checkbox) getFellow("numbers")).isChecked(); boolean sequential = ((Checkbox) getFellow("sequential")).isChecked(); boolean match = ((Checkbox) getFellow("match")).isChecked(); //Get converter and convert Factory factory = new DefaultFactory(); Writer writer; try { writer = factory.getWriter(outO, outP, outF, lower, numbers, sequential, match, logger.getName()); if (collapse) { logger.log(Level.INFO, "***[haplotype collapse begin]***"); MSA col = msa.collapse(gapsAsMissing, countMissing, limit, logger.getName()); logger.log(Level.INFO, "***[haplotype collapse end]***"); out = writer.write(col); collapsed = true; } else { out = writer.write(msa); collapsed = false; } } catch (Exception ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } ((Textbox) getFellow("output")).setDisabled(false); ((Textbox) getFellow("output")).setFocus(true); ((Listbox) getFellow("outputOS")).setDisabled(false); ((Label) getFellow("outputOSLabel")).setSclass("black"); ((Html) getFellow("andSave")).setSclass("black"); ((Button) getFellow("save")).setDisabled(false); ((Center) getFellow("step4")).setZclass("step4"); outputText = new StringBuffer(out); if (out.length() < maxChars) ((Textbox) getFellow("output")).setRawValue(out); else { ((Textbox) getFellow("output")).setRawValue(outputText.substring(0, maxChars)); Messagebox.show( "The complete output text is not being displayed due to its length. Save the text as a file to get the complete text.", "Output text too long", Messagebox.OK, Messagebox.INFORMATION); } } public void read() { String in = inputText.toString(); Textbox input = (Textbox) getFellow("input"); if (in.length() == input.getText().length()) input.setReadonly(false); else input.setReadonly(true); if (!in.equals("")) { //Imprimir informacin de nuevo MSA logger.log(Level.INFO, "***[NEW MSA ENTERED]***"); logger.log(Level.WARNING, "***[NEW MSA ENTERED]***"); logger.log(Level.SEVERE, "***[NEW MSA ENTERED]***"); //Deshabilitar pasos 3 y 4 y borrar textbox de salida ((North) getFellow("step3")).setZclass("step3bw"); ((Listbox) getFellow("outputProgram")).setDisabled(true); ((Label) getFellow("outputProgramLabel")).setSclass("gray"); ((Listbox) getFellow("outputProgram")).setSelectedIndex(0); onOutputProgramSelect(); ((Center) getFellow("step4")).setZclass("step4bw"); ((Textbox) getFellow("output")).setRawValue(""); ((Textbox) getFellow("output")).setDisabled(true); ((Label) getFellow("outputOSLabel")).setSclass("gray"); ((Listbox) getFellow("outputOS")).setDisabled(true); ((Html) getFellow("andSave")).setSclass("gray"); ((Button) getFellow("save")).setDisabled(true); String inO; Listitem inOItem = ((Listbox) getFellow("inputOS")).getSelectedItem(); if (inOItem == null) inOItem = ((Listbox) getFellow("inputOS")).getItemAtIndex(0); inO = (String) inOItem.getValue(); boolean autodetect = ((Checkbox) getFellow("autodetect")).isChecked(); String inP; String inF; if (autodetect) { inP = null; inF = null; } else { inP = ((Listbox) getFellow("inputProgram")).getSelectedItem().getLabel(); inF = ((Listbox) getFellow("inputFormat")).getSelectedItem().getLabel(); } //Get reader and read Factory factory = new DefaultFactory(); Reader reader; try { reader = factory.getReader(inO, inP, inF, autodetect, logger.getName()); msa = reader.read(in); } catch (ParseException ex) { logger.log(Level.SEVERE, "Failure parsing input MSA:\n" + ex.getMessage()); return; } catch (UnsupportedOperationException ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } catch (Exception ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } ((Listbox) getFellow("outputProgram")).setDisabled(false); ((Label) getFellow("outputProgramLabel")).setSclass("black"); onOutputProgramSelect(); ((North) getFellow("step3")).setZclass("step3"); } } public void onPanelOpen() { North north = (North) getFellow("step3"); north.invalidate(); } public void onPasteSample() { Textbox input = (Textbox) getFellow("input"); boolean autodetect = ((Checkbox) getFellow("autodetect")).isChecked(); if (autodetect) { input.setRawValue(stringFromResource("/clustal.nex")); } else { String program = ((Listbox) getFellow("inputProgram")).getSelectedItem().getLabel(); String format = ((Listbox) getFellow("inputFormat")).getSelectedItem().getLabel(); if (program.equals("Clustal")) { if (format.equals("ALN")) input.setRawValue(stringFromResource("/clustal.aln")); else if (format.equals("FASTA")) input.setRawValue(stringFromResource("/clustal.fas")); else if (format.equals("GDE")) input.setRawValue(stringFromResource("/clustal.gde")); else if (format.equals("MSF")) input.setRawValue(stringFromResource("/clustal.msf")); else if (format.equals("NEXUS")) input.setRawValue(stringFromResource("/clustal.nex")); else if (format.equals("PHYLIP")) input.setRawValue(stringFromResource("/clustal.phy")); else if (format.equals("PIR")) input.setRawValue(stringFromResource("/clustal.pir")); } else if (program.equals("MAFFT")) { if (format.equals("ALN")) input.setRawValue(stringFromResource("/mafft.aln")); else if (format.equals("FASTA")) input.setRawValue(stringFromResource("/mafft.fas")); } else if (program.equals("TCoffee")) { if (format.equals("ALN")) input.setRawValue(stringFromResource("/tcoffee.aln")); else if (format.equals("FASTA")) input.setRawValue(stringFromResource("/tcoffee.fas")); else if (format.equals("MSF")) input.setRawValue(stringFromResource("/tcoffee.msf")); else if (format.equals("PHYLIP")) input.setRawValue(stringFromResource("/tcoffee.phy")); else if (format.equals("PIR")) input.setRawValue(stringFromResource("/tcoffee.pir")); } else if (program.equals("MUSCLE")) { if (format.equals("ALN")) input.setRawValue(stringFromResource("/muscle.aln")); else if (format.equals("FASTA")) input.setRawValue(stringFromResource("/muscle.fas")); else if (format.equals("MSF")) input.setRawValue(stringFromResource("/muscle.msf")); else if (format.equals("PHYLIP")) input.setRawValue(stringFromResource("/muscle.phy")); } else if (program.equals("PROBCONS")) { if (format.equals("ALN")) input.setRawValue(stringFromResource("/probcons.aln")); else if (format.equals("FASTA")) input.setRawValue(stringFromResource("/probcons.fas")); } } inputText = new StringBuffer(input.getText()); input.setFocus(true); read(); } public String stringFromResource(String name) { StringBuffer result = new StringBuffer(); try { InputStream is = this.getClass().getResourceAsStream(name); BufferedReader in = new BufferedReader(new InputStreamReader(is)); String temp = ""; while ((temp = in.readLine()) != null) result.append(temp + "\n"); in.close(); } catch (Exception e) { logger.log(Level.SEVERE, e.toString()); } return result.toString(); } public void onInfoSave() { Filedownload.save(((Textbox) getFellow("info")).getText(), "text/plain", "info.txt"); } public void onErrorSave() { Filedownload.save(((Textbox) getFellow("error")).getText(), "text/plain", "error.txt"); } public void onWarningSave() { Filedownload.save(((Textbox) getFellow("warning")).getText(), "text/plain", "warning.txt"); } public void onInfoClear() { ((Textbox) getFellow("info")).setRawValue(""); } public void onErrorClear() { ((Textbox) getFellow("error")).setRawValue(""); } public void onWarningClear() { ((Textbox) getFellow("warning")).setRawValue(""); } public void initialize() { HttpServletRequest request = (HttpServletRequest) Executions.getCurrent().getNativeRequest(); String id = request.getSession().getId(); logger = Logger.getLogger(id + System.currentTimeMillis()); logger.setLevel(Level.ALL); WebLogHandler handler = new WebLogHandler((Textbox) getFellow("error"), (Textbox) getFellow("info"), (Textbox) getFellow("warning")); logger.addHandler(handler); Listbox inputOS = (Listbox) getFellow("inputOS"); Listbox outputOS = (Listbox) getFellow("outputOS"); String userAgent = request.getHeader("user-agent"); if (userAgent.contains("WIN") || userAgent.contains("win") || userAgent.contains("Win")) { inputOS.getItemAtIndex(0).setValue("Windows"); inputOS.getItemAtIndex(1).setValue("Linux"); inputOS.getItemAtIndex(2).setValue("MacOS"); inputOS.getItemAtIndex(0).setLabel("Windows"); inputOS.getItemAtIndex(1).setLabel("Linux/Mac OS X"); inputOS.getItemAtIndex(2).setLabel("Mac OS"); outputOS.getItemAtIndex(0).setValue("Windows"); outputOS.getItemAtIndex(1).setValue("Linux"); outputOS.getItemAtIndex(2).setValue("MacOS"); outputOS.getItemAtIndex(0).setLabel("Windows"); outputOS.getItemAtIndex(1).setLabel("Linux/Mac OS X"); outputOS.getItemAtIndex(2).setLabel("Mac OS"); } } public void sendEmail() { String email = ((Textbox) getFellow("email")).getText(); String subject = ((Textbox) getFellow("subject")).getText(); String emailbody = ((Textbox) getFellow("emailbody")).getText(); String attachment = ((Label) getFellow("attachmentTempLabel")).getValue(); String attachmentName = ((Label) getFellow("attachmentLabel")).getValue(); if (!attachment.equals("")) { Emailer.sendEmail(email, "alter@sing.ei.uvigo.es", "[ALTER-FEEDBACK] // " + subject, emailbody, attachment, attachmentName); } else { Emailer.sendEmail(email, "alter@sing.ei.uvigo.es", "[ALTER-FEEDBACK] // " + subject, emailbody); } ((Textbox) getFellow("subject")).setText(""); ((Textbox) getFellow("emailbody")).setText(""); ((Label) getFellow("attachmentTempLabel")).setValue(""); ((Label) getFellow("attachmentLabel")).setValue(""); } }