Project

General

Profile

Download (4.85 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2015 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10
package eu.etaxonomy.taxeditor.remoting.server;
11

    
12
import java.io.File;
13
import java.io.IOException;
14

    
15
import org.apache.commons.io.FileUtils;
16
import org.apache.commons.lang.StringEscapeUtils;
17

    
18
import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;
19
import eu.etaxonomy.cdm.config.CdmPersistentXMLSource.CdmSourceProperties;
20
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
21

    
22
/**
23
 * @author cmathew
24
 * @date 11 Nov 2015
25
 *
26
 */
27
public class CDMServerUtils {
28

    
29

    
30
    public static String convertEditorToServerConfig() {
31
        StringBuilder configStringBuilder = new StringBuilder();
32
        configStringBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + System.lineSeparator());
33
        configStringBuilder.append("<!-- DO NOT EDIT THIS FILE MANUALLY. -->");
34
        configStringBuilder.append("<!-- It is created by the Taxonomic Editor for launching a managed CDM Server. -->");
35
        configStringBuilder.append("<beans xmlns=\"http://www.springframework.org/schema/beans\"" + System.lineSeparator());
36
        configStringBuilder.append("  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + System.lineSeparator());
37
        configStringBuilder.append("  xmlns:tx=\"http://www.springframework.org/schema/tx\"" + System.lineSeparator());
38
        configStringBuilder.append("  xmlns:context=\"http://www.springframework.org/schema/context\"" + System.lineSeparator());
39
        configStringBuilder.append("  xsi:schemaLocation=\"http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" + System.lineSeparator());
40
        configStringBuilder.append("  http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-2.5.xsd" + System.lineSeparator());
41
        configStringBuilder.append("  http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" + System.lineSeparator());
42
        configStringBuilder.append("\">" + System.lineSeparator());
43
        configStringBuilder.append(" <bean id=\"dataSourceProperties\" class=\"eu.etaxonomy.cdm.remote.config.DataSourceProperties\">" + System.lineSeparator());
44
        configStringBuilder.append("   <property name=\"propsMap\">" + System.lineSeparator());
45
        configStringBuilder.append("       <map/>" + System.lineSeparator());
46
        configStringBuilder.append("   </property>" + System.lineSeparator());
47
        configStringBuilder.append(" </bean>" + System.lineSeparator());
48

    
49
        for(CdmPersistentDataSource dataSource : CdmPersistentDataSource.getAllDataSources()) {
50
            String beanId = xmlNCNamefrom(dataSource.getName());
51
            String user = dataSource.getUsername();
52
            String password = dataSource.getPassword();
53
            String driverClass = dataSource.getCdmSourceProperty(CdmSourceProperties.DRIVER_CLASS);
54
            String jdbcUrl = StringEscapeUtils.escapeXml(dataSource.getCdmSourceProperty(CdmSourceProperties.URL));
55
            configStringBuilder.append(" <bean id=\""  + beanId + "\" lazy-init=\"true\" class=\"com.mchange.v2.c3p0.ComboPooledDataSource\">" + System.lineSeparator());
56
            configStringBuilder.append("   <property name=\"driverClass\" value=\"" + driverClass + "\"/>" + System.lineSeparator());
57
            configStringBuilder.append("   <property name=\"user\" value=\"" + user + "\"/>" + System.lineSeparator());
58
            configStringBuilder.append("   <property name=\"password\" value=\"" + password + "\"/>" + System.lineSeparator());
59
            configStringBuilder.append("   <property name=\"jdbcUrl\" value=\"" + jdbcUrl + "\"/>" + System.lineSeparator());
60
            configStringBuilder.append(" </bean>" + System.lineSeparator());
61

    
62
        }
63
        configStringBuilder.append("</beans>" + System.lineSeparator());
64

    
65
        return configStringBuilder.toString();
66
    }
67

    
68
    /**
69
     * Assures that the datasource name is converted into a valid XML type NCName.
70
     *
71
     * Prefixes the string and replaces all forbidden characters by '_'.
72
     *
73
     * @param dataSource
74
     * @return
75
     */
76
    public static String xmlNCNamefrom(String beanName) {
77
        return "MGD_" + beanName.replaceAll("[^a-zA-Z0-9]", "_");
78
    }
79

    
80
    public static File writeManagedServerConfig(String config, String fileName) throws IOException {
81
        File managedConfigFile = new File(CdmApplicationUtils.getWritableResourceDir(), fileName);
82
        if(managedConfigFile.exists()) {
83
            managedConfigFile.delete();
84
        }
85
        if(managedConfigFile.createNewFile()) {
86
            FileUtils.writeStringToFile(managedConfigFile, config);
87
        }
88
        return managedConfigFile;
89
    }
90

    
91
}
(2-2/2)