KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > j2ee > sun > ws7 > serverresources > beans > WS70ResourceUtils


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 /*
21  * WS70ResourceUtils.java
22  */

23
24 package org.netbeans.modules.j2ee.sun.ws7.serverresources.beans;
25
26
27
28 import java.io.PrintWriter JavaDoc;
29 import java.io.OutputStreamWriter JavaDoc;
30 import java.io.File JavaDoc;
31 import java.io.FileInputStream JavaDoc;
32
33 import java.util.Map JavaDoc;
34 import java.util.List JavaDoc;
35 import java.util.Vector JavaDoc;
36 import java.util.ArrayList JavaDoc;
37 import java.util.Properties JavaDoc;
38 import java.util.HashMap JavaDoc;
39 import java.text.MessageFormat JavaDoc;
40 import java.util.ResourceBundle JavaDoc;
41
42 import javax.management.Attribute JavaDoc;
43 import javax.management.ObjectName JavaDoc;
44 import javax.management.AttributeList JavaDoc;
45 import org.netbeans.api.project.FileOwnerQuery;
46 import org.netbeans.api.project.Project;
47 import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider;
48 import org.netbeans.modules.j2ee.sun.api.SunURIManager;
49
50 import org.openide.util.NbBundle;
51 import org.openide.ErrorManager;
52
53 import org.openide.nodes.Node;
54 import org.openide.nodes.Node.Cookie;
55 import org.openide.nodes.Node.Property;
56 import org.openide.cookies.SaveCookie;
57
58 import org.openide.filesystems.FileLock;
59 import org.openide.filesystems.FileUtil;
60 import org.openide.filesystems.FileObject;
61 import org.openide.filesystems.FileSystem;
62 import org.openide.filesystems.FileAlreadyLockedException;
63
64 import javax.enterprise.deploy.spi.DeploymentManager JavaDoc;
65
66 import org.netbeans.modules.j2ee.sun.ide.editors.NameValuePair;
67
68 import org.netbeans.modules.j2ee.sun.ws7.serverresources.wizards.WS70WizardConstants;
69 import org.netbeans.modules.j2ee.sun.ide.editors.IsolationLevelEditor;
70
71 import org.netbeans.modules.j2ee.sun.ws7.serverresources.wizards.ResourceConfigData;
72 import org.netbeans.modules.j2ee.sun.ws7.serverresources.dd.*;
73 import org.netbeans.modules.j2ee.sun.ws7.dm.WS70SunDeploymentManager;
74 import org.netbeans.modules.j2ee.sun.ws7.j2ee.ResourceType;
75 import org.netbeans.modules.j2ee.sun.ws7.ui.Util;
76
77 import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties;
78
79
80
81 /*
82  * Code reused from Appserver common API module
83  *
84  */

85 public class WS70ResourceUtils implements WS70WizardConstants{
86     
87     static final ResourceBundle JavaDoc bundle = ResourceBundle.getBundle("org.netbeans.modules.j2ee.sun.ws7.serverresources.beans.Bundle");// NOI18N
88
private static String JavaDoc MAIL_PROP_PREFIX="mail."; //NOI18N // To FIX issue# 89106.
89

90     /**
91      * Creates a new instance of WS70ResourceUtils
92      */

93     public WS70ResourceUtils() {
94     }
95     
96     public static void saveNodeToXml(FileObject resFile, WS70Resources res){
97         try {
98             res.write(FileUtil.toFile(resFile));
99         }catch(Exception JavaDoc ex){
100             ErrorManager.getDefault().notify(ErrorManager.WARNING, ex);
101         }
102     }
103     public static void registerResource(WS70Resources resources, String JavaDoc resourceType, String JavaDoc config,
104                                            WS70SunDeploymentManager dm) throws Exception JavaDoc{
105         boolean added = false;
106         String JavaDoc jndiName = null;
107         if(resourceType==WS70WizardConstants.__MailResource){
108             WS70MailResource mailres = resources.getWS70MailResource(0);
109             HashMap JavaDoc attrMap = new HashMap JavaDoc();
110             jndiName = mailres.getJndiName();
111 // START- FIX issue# 89106. attributes in mail-resource are now replaced with name/value pair as property element.
112
ArrayList JavaDoc mailresProps = new ArrayList JavaDoc();
113             mailresProps.add(MAIL_PROP_PREFIX+WS70WizardConstants.__Host+"="+mailres.getHost());
114             mailresProps.add(MAIL_PROP_PREFIX+WS70WizardConstants.__MailUser+"="+mailres.getUser());
115             mailresProps.add(MAIL_PROP_PREFIX+WS70WizardConstants.__From+"="+mailres.getFrom());
116             mailresProps.add(WS70WizardConstants.__StoreProtocol+"="+ mailres.getStoreProtocol());
117             mailresProps.add(WS70WizardConstants.__StoreProtocolClass+"="+ mailres.getStoreProtocolClass());
118             mailresProps.add(WS70WizardConstants.__TransportProtocol+"="+ mailres.getTransportProtocol());
119             mailresProps.add(WS70WizardConstants.__TransportProtocolClass+"="+ mailres.getTransportProtocolClass());
120
121 /*
122             attrMap.put(WS70WizardConstants.__Host, mailres.getHost());
123             attrMap.put(WS70WizardConstants.__User, mailres.getUser());
124             attrMap.put(WS70WizardConstants.__From, mailres.getFrom());
125             attrMap.put(WS70WizardConstants.__StoreProtocol, mailres.getStoreProtocol());
126             attrMap.put(WS70WizardConstants.__StoreProtocolClass, mailres.getStoreProtocolClass());
127             attrMap.put(WS70WizardConstants.__TransportProtocol, mailres.getTransportProtocol());
128             attrMap.put(WS70WizardConstants.__TransportProtocolClass, mailres.getTransportProtocolClass());
129  **/

130 // END- FIX issue# 89106.
131
attrMap.put(WS70WizardConstants.__Enabled, mailres.getEnabled());
132             attrMap.put(WS70WizardConstants.__Description, mailres.getDescription());
133
134             if(!isAlreadyRegisterdResource(jndiName, config, ResourceType.MAIL, dm)){
135                 ErrorManager.getDefault().log(ErrorManager.USER,
136                     NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Registering_Resource", jndiName));
137                 dm.addMailResource(config, jndiName, attrMap);
138                 added = true;
139             }else{
140                 ErrorManager.getDefault().log(ErrorManager.USER,
141                     NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Updating_Resource", jndiName));
142                 dm.setResource(ResourceType.MAIL, config, jndiName, attrMap, false);
143             }
144 // START- FIX issue# 89106.
145
dm.setUserResourceProp(config, WS70WizardConstants.__MailResource, jndiName, "property", mailresProps, false);
146 // END- FIX issue# 89106.
147
ErrorManager.getDefault().log(ErrorManager.USER,
148                 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_DeployConfig"));
149              
150             dm.deployAndReconfig(config);
151         }else if(resourceType==WS70WizardConstants.__CustomResource){
152             WS70CustomResource customres = resources.getWS70CustomResource(0);
153             HashMap JavaDoc attrMap = new HashMap JavaDoc();
154             jndiName = customres.getJndiName();
155             attrMap.put(WS70WizardConstants.__ResType, customres.getResType());
156             attrMap.put(WS70WizardConstants.__FactoryClass, customres.getFactoryClass());
157             attrMap.put(WS70WizardConstants.__Enabled, customres.getEnabled());
158             attrMap.put(WS70WizardConstants.__Description, customres.getDescription());
159             List JavaDoc props = getExtraProperties(customres.getPropertyElement());
160             if(!isAlreadyRegisterdResource(jndiName, config, ResourceType.CUSTOM, dm)){
161                 ErrorManager.getDefault().log(ErrorManager.USER,
162                     NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Registering_Resource", jndiName));
163                  
164                 dm.addCustomResource(config, jndiName, attrMap);
165                 added = true;
166             }else{
167                 ErrorManager.getDefault().log(ErrorManager.USER,
168                     NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Updating_Resource", jndiName));
169  
170                 dm.setResource(ResourceType.CUSTOM, config, jndiName, attrMap, false);
171             }
172             dm.setUserResourceProp(config, WS70WizardConstants.__CustomResource, jndiName, "property", props, false);
173             ErrorManager.getDefault().log(ErrorManager.USER,
174                 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_DeployConfig"));
175              
176             dm.deployAndReconfig(config);
177         }else if(resourceType==WS70WizardConstants.__ExternalJndiResource){
178             WS70ExternalJndiResource extres = resources.getWS70ExternalJndiResource(0);
179             HashMap JavaDoc attrMap = new HashMap JavaDoc();
180             jndiName = extres.getJndiName();
181             attrMap.put(WS70WizardConstants.__ExternalJndiName, extres.getExternalJndiName());
182             attrMap.put(WS70WizardConstants.__ResType, extres.getResType());
183             attrMap.put(WS70WizardConstants.__FactoryClass, extres.getFactoryClass());
184             attrMap.put(WS70WizardConstants.__Enabled, extres.getEnabled());
185             attrMap.put(WS70WizardConstants.__Description, extres.getDescription());
186             List JavaDoc props = getExtraProperties(extres.getPropertyElement());
187             if(!isAlreadyRegisterdResource(jndiName, config, ResourceType.JNDI, dm)){
188                 ErrorManager.getDefault().log(ErrorManager.USER,
189                     NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Registering_Resource", jndiName));
190                  
191                 dm.addJNDIResource(config, jndiName, attrMap);
192                 added = true;
193             }else{
194                 ErrorManager.getDefault().log(ErrorManager.USER,
195                     NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Updating_Resource", jndiName));
196  
197                 dm.setResource(ResourceType.JNDI, config, jndiName, attrMap, false);
198             }
199             dm.setUserResourceProp(config, WS70WizardConstants.__ExternalJndiResource, jndiName, "property", props, false);
200             ErrorManager.getDefault().log(ErrorManager.USER,
201                 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_DeployConfig"));
202              
203             dm.deployAndReconfig(config);
204         }else if(resourceType==WS70WizardConstants.__JdbcResource){
205             WS70JdbcResource jdbcres = resources.getWS70JdbcResource(0);
206             HashMap JavaDoc attrMap = new HashMap JavaDoc();
207             jndiName = jdbcres.getJndiName();
208             attrMap.put(__DatasourceClassname, jdbcres.getDatasourceClass());
209             attrMap.put(__MinConnections, jdbcres.getMinConnections());
210             attrMap.put(__MaxConnections, jdbcres.getMaxConnections());
211             attrMap.put(__IdleTimeout, jdbcres.getIdleTimeout());
212             attrMap.put(__WaitTimeout, jdbcres.getWaitTimeout());
213             attrMap.put(__IsolationLevel, jdbcres.getIsolationLevel());
214             attrMap.put(__IsolationLevelGuaranteed, jdbcres.getIsolationLevelGuaranteed());
215             attrMap.put(__ConnectionValidation, jdbcres.getConnectionValidation());
216             attrMap.put(__ConnectionValidationTableName, jdbcres.getConnectionValidationTableName());
217             attrMap.put(__FailAllConnections, jdbcres.getFailAllConnections());
218             attrMap.put(WS70WizardConstants.__Enabled, jdbcres.getEnabled());
219             attrMap.put(WS70WizardConstants.__Description, jdbcres.getDescription());
220             List JavaDoc props = getExtraProperties(jdbcres.getPropertyElement());
221             if(!isAlreadyRegisterdResource(jndiName, config, ResourceType.JDBC, dm)){
222                 ErrorManager.getDefault().log(ErrorManager.USER,
223                     NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Registering_Resource", jndiName));
224                  
225                 dm.addJdbcResource(config, jndiName, attrMap);
226                 added = true;
227             }else{
228                 ErrorManager.getDefault().log(ErrorManager.USER,
229                     NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Updating_Resource", jndiName));
230  
231                 dm.setResource(ResourceType.JDBC, config, jndiName, attrMap, false);
232             }
233             dm.setUserResourceProp(config, WS70WizardConstants.__JdbcResource, jndiName, "property", props, false);
234             ErrorManager.getDefault().log(ErrorManager.USER,
235                 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_DeployConfig"));
236              
237             dm.deployAndReconfig(config);
238         }else{
239             Util.showError(NbBundle.getMessage(WS70ResourceUtils.class, "ERR_UNKNOWN_RESOURCE"),
240                 NbBundle.getMessage(WS70ResourceUtils.class, "ERR_UNKNOWN_RESOURCE")
241             );
242             return;
243         }
244         String JavaDoc msg = null;
245         if(added){
246             msg = NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Resource_Added", jndiName);
247         }else{
248             msg = NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Resource_Updated", jndiName);
249         }
250         Util.showInformation(msg);
251     }
252     private static boolean isAlreadyRegisterdResource(String JavaDoc jndiName, String JavaDoc configName,
253                             ResourceType resType, WS70SunDeploymentManager manager) throws Exception JavaDoc{
254         List JavaDoc resources = manager.getResources(resType, configName);
255
256         Object JavaDoc[] res = resources.toArray();
257         for (int i = 0; i < res.length; i ++){
258             String JavaDoc name = (String JavaDoc)((HashMap JavaDoc)res[i]).get("jndi-name");
259             if(name!=null && name.equals(jndiName)){
260                 return true;
261             }
262          }
263         return false;
264     }
265     private static List JavaDoc getExtraProperties(PropertyElement[] props) throws Exception JavaDoc {
266         ArrayList JavaDoc list = new ArrayList JavaDoc();
267         for(int i=0; i<props.length; i++){
268             String JavaDoc name = props[i].getName();
269             String JavaDoc value = props[i].getValue();
270             if(value != null && value.trim().length() != 0){
271                 list.add(name+"="+value);
272                 
273             }
274         }
275         return list;
276     }
277     
278     public static void saveJDBCResourceDatatoXml(ResourceConfigData dsData) {
279         try{
280             WS70Resources res = getResourceGraph();
281             WS70JdbcResource datasource = res.newWS70JdbcResource();
282            
283             String JavaDoc[] keys = dsData.getFieldNames();
284             for (int i = 0; i < keys.length; i++) {
285                 String JavaDoc key = keys[i];
286                 if (key.equals(__Properties)){
287                     Vector JavaDoc props = (Vector JavaDoc)dsData.getProperties();
288                     for (int j = 0; j < props.size(); j++) {
289                         NameValuePair pair = (NameValuePair)props.elementAt(j);
290                         PropertyElement prop = datasource.newPropertyElement();
291                         prop = populatePropertyElement(prop, pair);
292                         datasource.addPropertyElement(prop);
293                     }
294                 }else{
295                     String JavaDoc value = dsData.getString(key);
296                     if (key.equals(__JndiName))
297                         datasource.setJndiName(value);
298                     else if (key.equals(__DatasourceClassname))
299                         datasource.setDatasourceClass(value);
300                     else if (key.equals(__MinConnections))
301                         datasource.setMinConnections(value);
302                     else if (key.equals(__MaxConnections))
303                         datasource.setMaxConnections(value);
304                     else if (key.equals(__IdleTimeout))
305                         datasource.setIdleTimeout(value);
306                     else if (key.equals(__WaitTimeout))
307                         datasource.setWaitTimeout(value);
308                     else if (key.equals(__IsolationLevel))
309                         datasource.setIsolationLevel(value);
310                     else if (key.equals(__IsolationLevelGuaranteed))
311                         datasource.setIsolationLevelGuaranteed(value);
312                     else if (key.equals(__ConnectionValidation))
313                         datasource.setConnectionValidation(value);
314                     else if (key.equals(__ConnectionValidationTableName))
315                         datasource.setConnectionValidationTableName(value);
316                     else if (key.equals(__FailAllConnections))
317                         datasource.setFailAllConnections(value);
318                     else if (key.equals(__Enabled))
319                         datasource.setEnabled(value);
320                     else if (key.equals(__Description))
321                         datasource.setDescription(value);
322                 }
323                 
324             } //for
325
res.addWS70JdbcResource(datasource);
326             //if(cpData != null){
327
//MYWORKRESsaveConnPoolDatatoXml(cpData);
328
//}
329
createFile(dsData.getTargetFileObject(), dsData.getTargetFile(), res);
330         }catch(Exception JavaDoc ex){
331             ex.printStackTrace();
332             System.out.println("Unable to saveJDBCResourceDatatoXml ");
333         }
334     }
335     
336     
337     public static void saveMailResourceDatatoXml(ResourceConfigData data) {
338         try{
339             Vector JavaDoc vec = data.getProperties();
340             WS70Resources res = getResourceGraph();
341             WS70MailResource mlresource = res.newWS70MailResource();
342                         
343             String JavaDoc[] keys = data.getFieldNames();
344             for (int i = 0; i < keys.length; i++) {
345                 String JavaDoc key = keys[i];
346                 if (key.equals(__Properties)) {
347                     Vector JavaDoc props = (Vector JavaDoc)data.getProperties();
348                     for (int j = 0; j < props.size(); j++) {
349                         NameValuePair pair = (NameValuePair)props.elementAt(j);
350                     }
351                 }else{
352                     String JavaDoc value = data.getString(key);
353                     if (key.equals(__JndiName))
354                         mlresource.setJndiName(value);
355                     else if (key.equals(__StoreProtocol))
356                         mlresource.setStoreProtocol(value);
357                     else if (key.equals(__StoreProtocolClass))
358                         mlresource.setStoreProtocolClass(value);
359                     else if (key.equals(__TransportProtocol))
360                         mlresource.setTransportProtocol(value);
361                     else if (key.equals(__TransportProtocolClass))
362                         mlresource.setTransportProtocolClass(value);
363                     else if (key.equals(__Host))
364                         mlresource.setHost(value);
365                     else if (key.equals(__MailUser))
366                         mlresource.setUser(value);
367                     else if (key.equals(__From))
368                         mlresource.setFrom(value);
369                     else if (key.equals(__Enabled))
370                         mlresource.setEnabled(value);
371                     else if (key.equals(__Description))
372                         mlresource.setDescription(value);
373                 }
374             } //for
375

376             res.addWS70MailResource(mlresource);
377             createFile(data.getTargetFileObject(), data.getTargetFile(), res);
378         }catch(Exception JavaDoc ex){
379             System.out.println("Unable to saveMailResourceDatatoXml ");
380         }
381     }
382     public static void saveCustomResourceDatatoXml(ResourceConfigData data) {
383         try{
384             Vector JavaDoc vec = data.getProperties();
385             WS70Resources res = getResourceGraph();
386             WS70CustomResource customresource = res.newWS70CustomResource();
387                         
388             String JavaDoc[] keys = data.getFieldNames();
389             for (int i = 0; i < keys.length; i++) {
390                 String JavaDoc key = keys[i];
391                 if (key.equals(__Properties)) {
392                     Vector JavaDoc props = (Vector JavaDoc)data.getProperties();
393                     for (int j = 0; j < props.size(); j++) {
394                         NameValuePair pair = (NameValuePair)props.elementAt(j);
395                         PropertyElement prop = customresource.newPropertyElement();
396                         prop = populatePropertyElement(prop, pair);
397                         customresource.addPropertyElement(prop);
398                     }
399                 }else{
400                     String JavaDoc value = data.getString(key);
401                     if (key.equals(__JndiName))
402                         customresource.setJndiName(value);
403                     else if (key.equals(__ResType))
404                         customresource.setResType(value);
405                     else if (key.equals(__FactoryClass))
406                         customresource.setFactoryClass(value);
407                     else if (key.equals(__Enabled))
408                         customresource.setEnabled(value);
409                     else if (key.equals(__Description))
410                         customresource.setDescription(value);
411                 }
412             } //for
413

414             res.addWS70CustomResource(customresource);
415             createFile(data.getTargetFileObject(), data.getTargetFile(), res);
416         }catch(Exception JavaDoc ex){
417             ex.printStackTrace();
418             System.out.println("Unable to saveCustomResourceDatatoXml ");
419         }
420     }
421     public static void saveExternalJndiResourceDatatoXml(ResourceConfigData data) {
422         try{
423             Vector JavaDoc vec = data.getProperties();
424             WS70Resources res = getResourceGraph();
425             WS70ExternalJndiResource ejndiresource = res.newWS70ExternalJndiResource();
426                         
427             String JavaDoc[] keys = data.getFieldNames();
428             for (int i = 0; i < keys.length; i++) {
429                 String JavaDoc key = keys[i];
430                 if (key.equals(__Properties)) {
431                     Vector JavaDoc props = (Vector JavaDoc)data.getProperties();
432                     for (int j = 0; j < props.size(); j++) {
433                         NameValuePair pair = (NameValuePair)props.elementAt(j);
434                         PropertyElement prop = ejndiresource.newPropertyElement();
435                         prop = populatePropertyElement(prop, pair);
436                         ejndiresource.addPropertyElement(prop);
437                     }
438                 }else{
439                     String JavaDoc value = data.getString(key);
440                     if (key.equals(__JndiName))
441                         ejndiresource.setJndiName(value);
442                     else if (key.equals(__ExternalJndiName))
443                         ejndiresource.setExternalJndiName(value);
444                     else if (key.equals(__ResType))
445                         ejndiresource.setResType(value);
446                     else if (key.equals(__FactoryClass))
447                         ejndiresource.setFactoryClass(value);
448                     else if (key.equals(__Enabled))
449                         ejndiresource.setEnabled(value);
450                     else if (key.equals(__Description))
451                         ejndiresource.setDescription(value);
452                 }
453             } //for
454

455             res.addWS70ExternalJndiResource(ejndiresource);
456             createFile(data.getTargetFileObject(), data.getTargetFile(), res);
457         }catch(Exception JavaDoc ex){
458             ex.printStackTrace();
459             System.out.println("Unable to saveExternalJNDIResourceDatatoXml ");
460         }
461     }
462     
463     public static void createFile(FileObject targetFolder, String JavaDoc filename, final WS70Resources res){
464         try{
465             //jdbc and jdo jndi names might be of format jdbc/ and jdo/
466
if(filename.indexOf("/") != -1){ //NOI18N
467
filename = filename.substring(0, filename.indexOf("/")) + "_" + filename.substring(filename.indexOf("/")+1, filename.length()); //NOI18N
468
}
469             if(filename.indexOf("\\") != -1){ //NOI18N
470
filename = filename.substring(0, filename.indexOf("\\")) + "_" + filename.substring(filename.indexOf("\\")+1, filename.length()); //NOI18N
471
}
472             String JavaDoc oldName = filename;
473             targetFolder = setUpExists(targetFolder);
474             filename = createUniqueFileName(filename, targetFolder, null);
475         if(!filename.equals(oldName)){
476                 String JavaDoc msg = java.text.MessageFormat.format(NbBundle.getMessage(WS70ResourceUtils.class, "LBL_UniqueResourceName"), new Object JavaDoc[]{oldName, filename}); //NOI18N
477
org.openide.awt.StatusDisplayer.getDefault().setStatusText(msg);
478             }
479             
480             final String JavaDoc resFileName = filename;
481             final FileObject resTargetFolder = targetFolder;
482             
483             FileSystem fs = targetFolder.getFileSystem();
484             fs.runAtomicAction(new FileSystem.AtomicAction() {
485                 public void run() throws java.io.IOException JavaDoc {
486                     FileObject newfile = resTargetFolder.createData(resFileName, "sun-ws7-resource"); //NOI18N
487

488                     FileLock lock = newfile.lock();
489                     try {
490                         PrintWriter JavaDoc to = new PrintWriter JavaDoc(newfile.getOutputStream(lock));
491                         try {
492                             res.write(to);
493                             to.flush();
494                         } catch(Exception JavaDoc ex){
495                             //Unable to create file
496
} finally {
497                             to.close();
498                         }
499                     } finally {
500                         lock.releaseLock();
501                     }
502                 }
503             });
504         }catch(Exception JavaDoc ex){
505             ex.printStackTrace();
506             //Unable to create file
507
System.out.println("Error while creating file");
508         }
509     }
510     
511     public static String JavaDoc createUniqueFileName(String JavaDoc in_targetName, FileObject fo, String JavaDoc defName){
512         String JavaDoc targetName = in_targetName;
513         
514         if (targetName == null || targetName.length() == 0) {
515             targetName = FileUtil.findFreeFileName(fo, defName, __SunResourceExt);
516         }else{
517             //Fix for bug# 5025573 - Check for invalid file names
518
if(! isFriendlyFilename(targetName)){
519                 if(defName != null)
520                     targetName = defName;
521                 else
522                     targetName = makeLegalFilename(targetName);
523             }
524             targetName = FileUtil.findFreeFileName(fo, targetName, __SunResourceExt);
525         }
526         return targetName;
527     }
528     
529     public static FileObject setUpExists(FileObject targetFolder){
530         FileObject pkgLocation = getResourceDirectory(targetFolder);
531         if(pkgLocation == null){
532             //resource will be created under existing structure
533
return targetFolder;
534         }else{
535             return pkgLocation;
536         }
537     }
538     
539     private static WS70Resources getResourceGraph(){
540         return org.netbeans.modules.j2ee.sun.ws7.serverresources.dd.impl.WS70Resources.createGraph();
541     }
542     
543     private static PropertyElement populatePropertyElement(PropertyElement prop, NameValuePair pair){
544         prop.setName(pair.getParamName());
545         prop.setValue(pair.getParamValue());
546         return prop;
547     }
548     
549     //Obtained from com.iplanet.ias.util.io.FileUtils - Byron's
550
public static boolean isLegalFilename(String JavaDoc filename) {
551         for(int i = 0; i < ILLEGAL_FILENAME_CHARS.length; i++)
552             if(filename.indexOf(ILLEGAL_FILENAME_CHARS[i]) >= 0)
553                 return false;
554         
555         return true;
556     }
557     
558     public static boolean isFriendlyFilename(String JavaDoc filename) {
559         if(filename.indexOf(BLANK) >= 0 || filename.indexOf(DOT) >= 0)
560             return false;
561         
562         return isLegalFilename(filename);
563     }
564     
565     public static String JavaDoc makeLegalFilename(String JavaDoc filename) {
566         for(int i = 0; i < ILLEGAL_FILENAME_CHARS.length; i++)
567             filename = filename.replace(ILLEGAL_FILENAME_CHARS[i], REPLACEMENT_CHAR);
568         
569         return filename;
570     }
571     
572     public static boolean isLegalResourceName(String JavaDoc filename) {
573         for(int i = 0; i < ILLEGAL_RESOURCE_NAME_CHARS.length; i++)
574             if(filename.indexOf(ILLEGAL_RESOURCE_NAME_CHARS[i]) >= 0)
575                 return false;
576         
577         return true;
578     }
579     
580     public static FileObject getResourceDirectory(FileObject fo){
581         Project holdingProj = FileOwnerQuery.getOwner(fo);
582         FileObject resourceDir = fo;
583         if (holdingProj != null){
584             J2eeModuleProvider provider = (J2eeModuleProvider) holdingProj.getLookup().lookup(J2eeModuleProvider.class);
585             File JavaDoc resourceLoc = provider.getEnterpriseResourceDirectory();
586             if(resourceLoc != null){
587                 if(resourceLoc.exists()){
588                     resourceDir = FileUtil.toFileObject(resourceLoc);
589                 }else{
590                     resourceLoc.mkdirs();
591                     resourceDir = FileUtil.toFileObject(resourceLoc);
592                 }
593             }
594         }
595         return resourceDir;
596     }
597     
598     private final static char BLANK = ' ';
599     private final static char DOT = '.';
600     private final static char REPLACEMENT_CHAR = '_';
601     private final static char[] ILLEGAL_FILENAME_CHARS = {'/', '\\', ':', '*', '?', '"', '<', '>', '|', ',' };
602     private final static char[] ILLEGAL_RESOURCE_NAME_CHARS = {':', '*', '?', '"', '<', '>', '|', ',' };
603 }
604
Popular Tags