| 1 7 package org.mmbase.applications.packaging.projects.creators; 8 9 import java.io.File ; 10 import java.io.FileOutputStream ; 11 import java.util.Date ; 12 import java.util.jar.JarOutputStream ; 13 import java.util.jar.Manifest ; 14 15 import org.mmbase.applications.packaging.ProviderManager; 16 import org.mmbase.applications.packaging.projects.Target; 17 import org.mmbase.applications.packaging.projects.packageStep; 18 import org.mmbase.util.XMLEntityResolver; 19 20 25 public class DisplayThemeCreator extends BasicCreator implements CreatorInterface { 26 27 30 public final static String DTD_PACKAGING_DISPLAY_THEME_1_0 = "packaging_display_theme_1_0.dtd"; 31 34 public final static String PUBLIC_ID_PACKAGING_DISPLAY_THEME_1_0 = "-//MMBase//DTD packaging_display_theme config 1.0//EN"; 35 36 37 40 public static void registerPublicIDs() { 41 XMLEntityResolver.registerPublicID(PUBLIC_ID_PACKAGING_DISPLAY_THEME_1_0, "DTD_PACKAGING_DISPLAY_THEME_1_0", DisplayThemeCreator.class); 42 } 43 44 45 48 public DisplayThemeCreator() { 49 cl = DisplayThemeCreator.class; 50 prefix = "packaging_display_theme"; 51 } 52 53 54 61 public boolean createPackage(Target target, int newversion) { 62 63 clearPackageSteps(); 64 65 packageStep step = getNextPackageStep(); 67 step.setUserFeedBack("display/theme packager started"); 68 69 String themename = getItemStringValue(target, "themename"); 70 71 step = getNextPackageStep(); 72 step.setUserFeedBack("used themename : " + themename); 73 74 String newfilename = getBuildPath() + getName(target).replace(' ', '_') + "@" + getMaintainer(target) + "_display_theme_" + newversion; 75 try { 76 JarOutputStream jarfile = new JarOutputStream (new FileOutputStream (newfilename + ".tmp"), new Manifest ()); 77 78 step = getNextPackageStep(); 79 step.setUserFeedBack("creating package.xml file..."); 80 createPackageMetaFile(jarfile, target, newversion); 81 step.setUserFeedBack("creating package.xml file...done"); 82 step = getNextPackageStep(); 83 step.setUserFeedBack("creating depends.xml file..."); 84 createDependsMetaFile(jarfile, target); 85 step.setUserFeedBack("creating depends.xml file...done"); 86 87 step = getNextPackageStep(); 88 step.setUserFeedBack("theme name ... "+themename); 89 90 String packpath=target.getBaseDir()+"themes"+File.separator+themename+File.separator+File.separator+"theme.xml"; 91 addFile(jarfile, packpath,themename+File.separator+"theme.xml", "themefile", ""); 92 93 packpath=target.getBaseDir()+"themes"+File.separator+themename+File.separator+"images"+File.separator; 94 int filecount = addFiles(jarfile, packpath, "*", "/CVS/", "image themefiles", "images/"+themename); 95 if (filecount == 0) { 96 step = getNextPackageStep(); 97 step.setUserFeedBack("did't add any theme image files, no files found"); 98 step.setType(packageStep.TYPE_WARNING); 99 } 100 packpath=target.getBaseDir()+"themes"+File.separator+themename+File.separator+"css"+File.separator; 101 filecount = addFiles(jarfile, packpath, "*", "/CVS/", "css themefiles", "css/"+themename); 102 if (filecount == 0) { 103 step = getNextPackageStep(); 104 step.setUserFeedBack("did't add any theme css files, no files found"); 105 step.setType(packageStep.TYPE_WARNING); 106 } 107 jarfile.close(); 108 } catch (Exception e) { 109 e.printStackTrace(); 110 } 111 112 113 if (getErrorCount() == 0) { 115 File f1 = new File (newfilename + ".tmp"); 116 File f2 = new File (newfilename + ".mmp"); 117 if (f1.renameTo(f2)) { 118 updatePackageTime(target, new Date (), newversion); 119 target.save(); 120 } 121 } 122 123 if (target.getPublishState()) { 125 ProviderManager.resetSleepCounter(); 126 step=getNextPackageStep(); 127 step.setUserFeedBack("publishing to provider : "+target.getPublishProvider()); 128 step=getNextPackageStep(); 129 step.setUserFeedBack("sending file : "+target.getId()+" ..."); 130 if (target.publish(newversion,step)) { 131 step.setUserFeedBack("sending file : "+target.getId()+" ... done"); 132 } else { 133 step.setUserFeedBack("sending file : "+target.getId()+" ... failed"); 134 } 135 } 136 137 step = getNextPackageStep(); 138 step.setUserFeedBack("display/theme packager ended : " + getErrorCount() + " errors and " + getWarningCount() + " warnings"); 139 return true; 140 } 141 142 143 149 public boolean decodeItems(Target target) { 150 super.decodeItems(target); 151 decodeStringItem(target, "themename"); 152 return true; 153 } 154 155 156 162 public String getXMLFile(Target target) { 163 String body = getDefaultXMLHeader(target); 164 body += getDefaultXMLMetaInfo(target); 165 body += "\t<themename>" + getItemStringValue(target, "themename") + "</themename>\n"; 166 body += getPackageDependsXML(target); 167 body += getRelatedPeopleXML("initiators", "initiator", target); 168 body += getRelatedPeopleXML("supporters", "supporter", target); 169 body += getRelatedPeopleXML("developers", "developer", target); 170 body += getRelatedPeopleXML("contacts", "contact", target); 171 if (target.getPublishProvider()!=null) { 172 if (target.getPublishState()) { 173 body+="\t<publishprovider name=\""+target.getPublishProvider()+"\" state=\"active\" sharepassword=\""+target.getPublishSharePassword()+"\" />\n"; 174 } else { 175 body+="\t<publishprovider name=\""+target.getPublishProvider()+"\" state=\"inactive\" sharepassword=\""+target.getPublishSharePassword()+"\" />\n"; 176 } 177 } 178 body += getDefaultXMLFooter(target); 179 return body; 180 } 181 182 183 188 public void setDefaults(Target target) { 189 target.setItem("themename", target.getName()); 190 } 191 192 public String getDefaultTargetName() { 193 return "theme"; 194 } 195 196 } 197 198 | Popular Tags |