KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > applications > packaging > projects > creators > CloudModelCreator


1 /*
2  * This software is OSI Certified Open Source Software.
3  * OSI Certified is a certification mark of the Open Source Initiative.
4  * The license (Mozilla version 1.0) can be read at the MMBase site.
5  * See http://www.MMBase.org/license
6  */

7 package org.mmbase.applications.packaging.projects.creators;
8
9 import java.io.FileOutputStream JavaDoc;
10 import java.util.Date JavaDoc;
11 import java.util.jar.JarOutputStream JavaDoc;
12 import java.util.jar.Manifest JavaDoc;
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 /**
20  * DisplayHtmlPackage, Handler for html packages
21  *
22  * @author Daniel Ockeloen (MMBased)
23  */

24 public class CloudModelCreator extends BasicCreator implements CreatorInterface {
25
26     /**
27      * Description of the Field
28      */

29     public final static String JavaDoc DTD_PACKAGING_CLOUD_MODEL_1_0 = "packaging_cloud_model_1_0.dtd";
30     /**
31      * Description of the Field
32      */

33     public final static String JavaDoc PUBLIC_ID_PACKAGING_CLOUD_MODEL_1_0 = "-//MMBase//DTD packaging_cloud_model config 1.0//EN";
34
35
36     /**
37      * Description of the Method
38      */

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     /**
45      *Constructor for the CloudModelCreator object
46      */

47     public CloudModelCreator() {
48         cl = CloudModelCreator.class;
49         prefix = "packaging_cloud_model";
50     }
51
52
53     /**
54      * Description of the Method
55      *
56      * @param target Description of the Parameter
57      * @param newversion Description of the Parameter
58      * @return Description of the Return Value
59      */

60     public boolean createPackage(Target target, int newversion) {
61
62         clearPackageSteps();
63
64         // step1
65
packageStep step = getNextPackageStep();
66         step.setUserFeedBack("cloud/model packager started");
67
68         String JavaDoc modelfile = target.getBaseDir() + getItemStringValue(target, "modelfile");
69         String JavaDoc 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 JavaDoc newfilename = getBuildPath() + getName(target).replace(' ', '_') + "@" + getMaintainer(target) + "_cloud_model_" + newversion;
77         try {
78             JarOutputStream JavaDoc jarfile = new JarOutputStream JavaDoc(new FileOutputStream JavaDoc(newfilename + ".tmp"), new Manifest JavaDoc());
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 JavaDoc e) {
100             e.printStackTrace();
101         }
102
103
104         // update the build file to reflect the last build, should only be done if no errors
105
if (getErrorCount() == 0) {
106         if (renameTempFile(newfilename)) {
107                 updatePackageTime(target, new Date JavaDoc(), newversion);
108                 target.save();
109         }
110         }
111
112     // do we need to send this to a publish provider ?
113
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     /**
133      * Description of the Method
134      *
135      * @param target Description of the Parameter
136      * @return Description of the Return Value
137      */

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     /**
147      * Gets the xMLFile attribute of the CloudModelCreator object
148      *
149      * @param target Description of the Parameter
150      * @return The xMLFile value
151      */

152     public String JavaDoc getXMLFile(Target target) {
153         String JavaDoc 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     /**
175      * Sets the defaults attribute of the CloudModelCreator object
176      *
177      * @param target The new defaults value
178      */

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 JavaDoc getModelFile(Target target) {
185     return target.getBaseDir() + getItemStringValue(target, "modelfile");
186     }
187
188   public String JavaDoc getDefaultTargetName() {
189         return "model";
190   }
191
192 }
193
194
Popular Tags