1 7 package org.mmbase.applications.packaging.projects.creators; 8 9 import java.io.FileOutputStream ; 10 import java.util.Date ; 11 import java.util.jar.JarOutputStream ; 12 import java.util.jar.Manifest ; 13 14 import org.mmbase.applications.packaging.ProviderManager; 15 import org.mmbase.applications.packaging.projects.Target; 16 import org.mmbase.applications.packaging.projects.packageStep; 17 import org.mmbase.util.XMLEntityResolver; 18 19 24 public class CloudModelCreator extends BasicCreator implements CreatorInterface { 25 26 29 public final static String DTD_PACKAGING_CLOUD_MODEL_1_0 = "packaging_cloud_model_1_0.dtd"; 30 33 public final static String PUBLIC_ID_PACKAGING_CLOUD_MODEL_1_0 = "-//MMBase//DTD packaging_cloud_model config 1.0//EN"; 34 35 36 39 public static void registerPublicIDs() { 40 XMLEntityResolver.registerPublicID(PUBLIC_ID_PACKAGING_CLOUD_MODEL_1_0, "DTD_PACKAGING_CLOUD_MODEL_1_0", CloudModelCreator.class); 41 } 42 43 44 47 public CloudModelCreator() { 48 cl = CloudModelCreator.class; 49 prefix = "packaging_cloud_model"; 50 } 51 52 53 60 public boolean createPackage(Target target, int newversion) { 61 62 clearPackageSteps(); 63 64 packageStep step = getNextPackageStep(); 66 step.setUserFeedBack("cloud/model packager started"); 67 68 String modelfile = target.getBaseDir() + getItemStringValue(target, "modelfile"); 69 String buildersdir = target.getBaseDir() + getItemStringValue(target, "buildersdir"); 70 71 step = getNextPackageStep(); 72 step.setUserFeedBack("used modelfile : " + modelfile); 73 step = getNextPackageStep(); 74 step.setUserFeedBack("used buildersdir : " + buildersdir); 75 76 String newfilename = getBuildPath() + getName(target).replace(' ', '_') + "@" + getMaintainer(target) + "_cloud_model_" + newversion; 77 try { 78 JarOutputStream jarfile = new JarOutputStream (new FileOutputStream (newfilename + ".tmp"), new Manifest ()); 79 80 step = getNextPackageStep(); 81 step.setUserFeedBack("creating package.xml file..."); 82 createPackageMetaFile(jarfile, target, newversion); 83 step.setUserFeedBack("creating package.xml file...done"); 84 step = getNextPackageStep(); 85 step.setUserFeedBack("creating depends.xml file..."); 86 createDependsMetaFile(jarfile, target); 87 step.setUserFeedBack("creating depends.xml file...done"); 88 89 addFile(jarfile, modelfile, "model.xml", "model", ""); 90 91 int filecount = addFiles(jarfile, buildersdir, ".xml", "", "builder", "builders"); 92 if (filecount == 0) { 93 step = getNextPackageStep(); 94 step.setUserFeedBack("did't add any display files, no files found"); 95 step.setType(packageStep.TYPE_WARNING); 96 } 97 98 jarfile.close(); 99 } catch (Exception e) { 100 e.printStackTrace(); 101 } 102 103 104 if (getErrorCount() == 0) { 106 if (renameTempFile(newfilename)) { 107 updatePackageTime(target, new Date (), newversion); 108 target.save(); 109 } 110 } 111 112 if (target.getPublishState()) { 114 ProviderManager.resetSleepCounter(); 115 step=getNextPackageStep(); 116 step.setUserFeedBack("publishing to provider : "+target.getPublishProvider()); 117 step=getNextPackageStep(); 118 step.setUserFeedBack("sending file : "+target.getId()+" ..."); 119 if (target.publish(newversion,step)) { 120 step.setUserFeedBack("sending file : "+target.getId()+" ... done"); 121 } else { 122 step.setUserFeedBack("sending file : "+target.getId()+" ... failed"); 123 } 124 } 125 126 step = getNextPackageStep(); 127 step.setUserFeedBack("cloud/model packager ended : " + getErrorCount() + " errors and " + getWarningCount() + " warnings"); 128 return true; 129 } 130 131 132 138 public boolean decodeItems(Target target) { 139 super.decodeItems(target); 140 decodeStringItem(target, "modelfile"); 141 decodeStringItem(target, "buildersdir"); 142 return true; 143 } 144 145 146 152 public String getXMLFile(Target target) { 153 String body = getDefaultXMLHeader(target); 154 body += getDefaultXMLMetaInfo(target); 155 body += "\t<modelfile>" + getItemStringValue(target, "modelfile") + "</modelfile>\n"; 156 body += "\t<buildersdir>" + getItemStringValue(target, "buildersdir") + "</buildersdir>\n"; 157 body += getPackageDependsXML(target); 158 body += getRelatedPeopleXML("initiators", "initiator", target); 159 body += getRelatedPeopleXML("supporters", "supporter", target); 160 body += getRelatedPeopleXML("developers", "developer", target); 161 body += getRelatedPeopleXML("contacts", "contact", target); 162 if (target.getPublishProvider()!=null) { 163 if (target.getPublishState()) { 164 body+="\t<publishprovider name=\""+target.getPublishProvider()+"\" state=\"active\" sharepassword=\""+target.getPublishSharePassword()+"\" />\n"; 165 } else { 166 body+="\t<publishprovider name=\""+target.getPublishProvider()+"\" state=\"inactive\" sharepassword=\""+target.getPublishSharePassword()+"\" />\n"; 167 } 168 } 169 body += getDefaultXMLFooter(target); 170 return body; 171 } 172 173 174 179 public void setDefaults(Target target) { 180 target.setItem("modelfile", "config/models/model.xml"); 181 target.setItem("buildersdir", "config/builders/"); 182 } 183 184 public String getModelFile(Target target) { 185 return target.getBaseDir() + getItemStringValue(target, "modelfile"); 186 } 187 188 public String getDefaultTargetName() { 189 return "model"; 190 } 191 192 } 193 194 | Popular Tags |