1 19 package org.openharmonise.him.files; 20 21 import java.io.*; 22 import java.util.*; 23 24 import javax.xml.parsers.*; 25 26 import org.openharmonise.commons.net.*; 27 import org.openharmonise.him.window.messages.*; 28 import org.openharmonise.vfs.*; 29 import org.openharmonise.vfs.status.*; 30 import org.w3c.dom.*; 31 import org.xml.sax.*; 32 33 34 42 public class FilesSynchroniser { 43 44 45 public FilesSynchroniser() { 46 super(); 47 } 48 49 57 public boolean syncFile(VirtualFile vfFile) { 58 boolean bOK = true; 59 60 String sFileName = null; 61 sFileName = vfFile.getVFS().getVirtualFileSystemView().getDisplayName(vfFile); 62 if(this.validateContent(vfFile, sFileName)) { 63 StatusData status = vfFile.sync(); 64 if(!status.isOK()) { 65 bOK=false; 66 MessageHandler.getInstance().fireMessageEvent("Resource " + sFileName + " failed to be submitted, due to an error.", MessageHandler.TYPE_ERROR); 67 } else { 68 MessageHandler.getInstance().fireMessageEvent("You have successfully submitted the resource \"" + sFileName + "\".", MessageHandler.TYPE_CONFIRM); 69 } 70 } else { 71 bOK=false; 72 } 73 74 return bOK; 75 } 76 77 85 public boolean syncFiles(List aVirtualFiles) { 86 boolean bOK = true; 87 Iterator itor = aVirtualFiles.iterator(); 88 while (itor.hasNext()) { 89 VirtualFile vfFile = (VirtualFile) itor.next(); 90 if(!this.syncFile(vfFile)) { 91 bOK = false; 92 } else { 93 } 94 } 95 96 return bOK; 97 } 98 99 103 private void validateMetadata() { 104 105 } 106 107 114 private boolean validateContent(VirtualFile vfFile, String sFileName) { 115 boolean bOK = true; 116 117 AbstractVirtualFileSystem vfs = vfFile.getVFS(); 118 String sContentType = vfs.getVirtualFileSystemView().getContentType(vfFile); 119 if( (sContentType.equalsIgnoreCase(MimeTypeMapping.XML.getMimeType()) || sContentType.equalsIgnoreCase(MimeTypeMapping.XSLT.getMimeType())) 120 && vfFile.getContent()!=null) { 121 122 Document xml = null; 123 try { 124 ByteArrayInputStream bais = new ByteArrayInputStream(vfFile.getContent()); 125 InputStreamReader isr = new InputStreamReader(bais, "UTF-8"); 126 127 xml = 128 DocumentBuilderFactory 129 .newInstance() 130 .newDocumentBuilder() 131 .parse( 132 new org.xml.sax.InputSource (isr)); 133 } catch (SAXException e1) { 134 bOK = false; 135 MessageHandler.getInstance().fireMessageEvent("There was a problem submitting the resource " + sFileName + ", due to an error: " + e1.getMessage(), MessageHandler.TYPE_ERROR); 136 e1.printStackTrace(); 137 } catch (ParserConfigurationException e1) { 138 bOK = false; 139 MessageHandler.getInstance().fireMessageEvent("There was a problem submitting the resource " + sFileName + ", due to an error: " + e1.getMessage(), MessageHandler.TYPE_ERROR); 140 e1.printStackTrace(); 141 } catch (FactoryConfigurationError e1) { 142 bOK = false; 143 MessageHandler.getInstance().fireMessageEvent("There was a problem submitting the resource " + sFileName + ", due to an error: " + e1.getMessage(), MessageHandler.TYPE_ERROR); 144 e1.printStackTrace(); 145 } catch (IOException e) { 146 bOK = false; 147 MessageHandler.getInstance().fireMessageEvent("There was a problem submitting the resource " + sFileName + ", due to an error: " + e.getMessage(), MessageHandler.TYPE_ERROR); 148 e.printStackTrace(); 149 } 150 151 } 152 153 return bOK; 154 } 155 156 } 157 | Popular Tags |