1 package eu
.etaxonomy
.cdm
.api
.application
;
3 import static eu
.etaxonomy
.cdm
.common
.XmlHelp
.getRoot
;
6 import java
.io
.FileOutputStream
;
7 import java
.io
.IOException
;
8 import java
.io
.InputStream
;
11 import org
.apache
.log4j
.Logger
;
12 import org
.jdom
.output
.Format
;
14 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
15 import eu
.etaxonomy
.cdm
.common
.XmlHelp
;
16 import eu
.etaxonomy
.cdm
.database
.CdmDataSource
;
18 public class CdmApplicationUtils
{
19 private static final Logger logger
= Logger
.getLogger(CdmApplicationUtils
.class);
21 //directory of the resources (configfiles etc.)
22 static File fileResourceDir
;
23 static final String MUST_EXIST_FILE
= "applicationContext.xml";
26 * Returns the directory path to the writable resources. (Resources must be copied to this directory, this is automatically done for
27 * the cdm.datasource.xml, sessionfactory.xml and applicationContext.xml
30 public static File
getWritableResourceDir(){
32 if (fileResourceDir
== null){
33 //workaround to find out in which environment the library is executed
34 URL url
= CdmUtils
.class.getResource("/"+ MUST_EXIST_FILE
);
36 File file
= new File(url
.getPath());
38 fileResourceDir
= file
.getParentFile();
40 String subPath
= File
.separator
+ "cdmResources" ;
41 file
= new File(System
.getProperty("user.home") + File
.separator
+ ".cdmLibrary" + File
.separator
+ "writableResources" );
42 //file = new File(System.getProperty("user.dir") + subPath ); //does not work in plugin-environmen (uses eclipse installation directory)
46 fileResourceDir
= file
;
49 logger
.debug("Resource directory: " + (fileResourceDir
== null?
"null":fileResourceDir
.getAbsolutePath()));
51 return fileResourceDir
;
54 static private void copyResources(File directory
){
55 copyResource(directory
, CdmDataSource
.DATASOURCE_FILE_NAME
);
60 * Copies a file from the classpath resource (e.g. jar-File) to the resources directory in the file system (get
62 * @param resourceFileName
64 static private void copyResource(File directory
, String resourceFileName
){
66 File fileToCopy
= new File(directory
+ File
.separator
+ resourceFileName
);
67 if (fileToCopy
.createNewFile()){
68 InputStream isDataSource
= CdmUtils
.class.getResourceAsStream("/"+ resourceFileName
);
69 XmlHelp
.saveToXml(getRoot(isDataSource
).getDocument(), new FileOutputStream(fileToCopy
), Format
.getPrettyFormat());
71 } catch (IOException e
) {
72 logger
.error("File " + resourceFileName
+ " + could not be created");