/* This file is part of ZamiaDroid. * * ZamiaDroid 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. * * ZamiaDroid 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ZamiaDroid. If not, see <http://www.gnu.org/licenses/>. */ package uni.projecte.dataLayer.ProjectManager; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import org.xmlpull.v1.XmlSerializer; import uni.projecte.controler.PreferencesControler; import android.content.Context; import android.os.Environment; import android.util.Log; import android.util.Xml; public class ZamiaProjectWriter { private XmlSerializer serializer; private StringWriter writer; private String extension=".xml"; public String convertXML2String(){ return writer.toString(); } public void openCitationDocument(){ writer = new StringWriter(); serializer = Xml.newSerializer(); try { serializer.setOutput(writer); serializer.startDocument("UTF-8", true); serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); serializer.startTag("","zamia"); } catch (Exception e) { throw new RuntimeException(e); } } public void openDocument(){ writer = new StringWriter(); serializer = Xml.newSerializer(); try { serializer.setOutput(writer); serializer.startDocument("UTF-8", true); serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); } catch (Exception e) { throw new RuntimeException(e); } } public void closeDocument(){ try { serializer.endDocument(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void setDescription(String description){ try { serializer.startTag("", "description"); serializer.text(description); serializer.endTag("", "description"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // <thesaurus type="Flora" filum="F" server="Biocat">Flora BDBC</thesaurus> public void setThesaurus(String filum, String thName, String server, String type){ try { serializer.startTag("", "thesaurus"); if(thName!=null) { if(type!=null || server!=null){ serializer.attribute("", "sourceType", type); serializer.attribute("", "sourceId", server); } else{ serializer.attribute("", "sourceType", "remote"); serializer.attribute("", "sourceId", "bdbc"); } if(filum!=null) serializer.attribute("", "filum",filum); serializer.text(thName); } serializer.endTag("", "thesaurus"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void setProjectType(String projectType){ try { serializer.startTag("", "project_type"); if(projectType!=null)serializer.text(projectType); serializer.endTag("", "project_type"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void openProject(String name, String language){ try { serializer.startTag("","zamia_project"); serializer.attribute("", "name", name); serializer.attribute("", "language", language); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void closeProject(){ try { serializer.endTag("","zamia_project"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void openFieldList(){ try { serializer.startTag("","field_list"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void closeFieldList(){ try { serializer.endTag("","field_list"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void openField(String label, String name, String description, String type,String defValue){ try { serializer.startTag("", "field"); serializer.attribute("", "label", label); if (name!=null) serializer.attribute("", "name", name); if (description!=null) serializer.attribute("", "description", description); serializer.attribute("", "type", type); serializer.startTag("", "default_value"); if (defValue!=null) serializer.text(defValue); serializer.endTag("", "default_value"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void closeField(){ try { serializer.endTag("", "field"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void openSLFields(){ try { serializer.startTag("", "second_level_fields"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void closeSLFields(){ try { serializer.endTag("", "second_level_fields"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /* * * <CitationCoordinate code="42,12, 1,2" precision="1.0" type="UTM alphanum" units="1m" /> <SecondaryCitationCoordinate code="42,12, 1,2" precision="0.0" type="UTM num" units="1m" /> * * * */ public void writeCitationCoordinate(){ try { serializer.startTag("", "CitationCoordinate"); serializer.attribute("", "code",""); serializer.attribute("", "precision","0.0"); serializer.attribute("", "type","UTM alphanum"); serializer.attribute("", "units","1m"); serializer.endTag("", "CitationCoordinate"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void writeToFile(String mostra, String fileName, String exportMode, Context c){ try { File root = Environment.getExternalStorageDirectory(); PreferencesControler pC=new PreferencesControler(c); if (root.canWrite()){ File gpxfile = new File(Environment.getExternalStorageDirectory()+"/"+pC.getDefaultPath()+"/"+exportMode+"/",fileName+extension); FileWriter gpxwriter = new FileWriter(gpxfile); BufferedWriter out = new BufferedWriter(gpxwriter); out.write(mostra); out.close(); } } catch (IOException e) { Log.e("sample", "Could not write file " + e.getMessage()); } } public void addItemsList(String[] itemsbyFieldId) { try{ serializer.startTag("", "predefined_values"); for (int i=0; i< itemsbyFieldId.length; i++){ serializer.startTag("", "value"); serializer.text(itemsbyFieldId[i]); serializer.endTag("", "value"); } serializer.endTag("", "predefined_values"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public XmlSerializer getSerializer() { return serializer; } public void setSerializer(XmlSerializer serializer) { this.serializer = serializer; } public StringWriter getWriter() { return writer; } }