Java tidy up, remove unused imports
git-svn-id: https://brutex.net/svn/xservices/trunk@72 e7e49efb-446e-492e-b9ec-fcafc1997a86tag-20130205r
parent
59059af377
commit
bcb98c74c6
|
@ -0,0 +1,181 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 Brian Rosenberger (Brutex Network)
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.brutex.xservices.util;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DatabaseMetaData;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
import org.apache.log4j.Level;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.quartz.utils.ConnectionProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Brian Rosenberger
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class BrutexHSQLQuartzConnectionProvider implements ConnectionProvider {
|
||||||
|
|
||||||
|
private Connection conn = null;
|
||||||
|
private final Logger logger = Logger.getLogger(this.getClass().getCanonicalName());
|
||||||
|
|
||||||
|
|
||||||
|
public Connection getConnection() throws SQLException {
|
||||||
|
if( conn!= null && conn.isValid(5)) {
|
||||||
|
logger.debug("Checking tables on pre-exisiting database connection.");
|
||||||
|
checkTables();
|
||||||
|
return conn;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
// Class.forName("org.hsqldb.jdbc.JDBCDriver" );
|
||||||
|
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.fatal("Failed to load Derby JDBC driver.");
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isConnected(false)) {
|
||||||
|
checkTables();
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return conn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shutdown() throws SQLException {
|
||||||
|
try {
|
||||||
|
// Class.forName("org.hsqldb.jdbc.JDBCDriver" );
|
||||||
|
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("ERROR: failed to load Derby JDBC driver.");
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String t = this.getClass().getClassLoader().getResource("/").toString()
|
||||||
|
.substring(6);
|
||||||
|
t += "../data/db";
|
||||||
|
System.out.println("Shut down embedded database now.");
|
||||||
|
Connection c = DriverManager.getConnection("jdbc:derby:" + t
|
||||||
|
+ ";shutdown=true;");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized void recursiveDelete(File dbDir) {
|
||||||
|
File[] files = dbDir.listFiles();
|
||||||
|
for (int i = 0; i < files.length; i++) {
|
||||||
|
if (files[i].isFile()) {
|
||||||
|
files[i].delete();
|
||||||
|
} else {
|
||||||
|
recursiveDelete(files[i]);
|
||||||
|
files[i].delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dbDir.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized void checkTables() throws SQLException {
|
||||||
|
logger.debug("Checking QUARTZ database schema.");
|
||||||
|
if(!isConnected(false)) {
|
||||||
|
logger.error("Failed to validate QUARTZ database schema.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> ddl_list = new ArrayList<String>(11);
|
||||||
|
ddl_list.add("QRTZ_JOB_DETAILS");
|
||||||
|
ddl_list.add("QRTZ_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_SIMPLE_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_CRON_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_SIMPROP_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_BLOB_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_CALENDARS");
|
||||||
|
ddl_list.add("QRTZ_PAUSED_TRIGGER_GRPS");
|
||||||
|
ddl_list.add("QRTZ_FIRED_TRIGGERS");
|
||||||
|
ddl_list.add("QRTZ_SCHEDULER_STATE");
|
||||||
|
ddl_list.add("QRTZ_LOCKS");
|
||||||
|
|
||||||
|
String ddl = this.getClass().getClassLoader().getResource("/").toString()
|
||||||
|
.substring(6)+ "../data/";
|
||||||
|
|
||||||
|
DatabaseMetaData dmd = conn.getMetaData();
|
||||||
|
for (String tbl : ddl_list) {
|
||||||
|
ResultSet rs = dmd.getTables(null, "APP", tbl, null);
|
||||||
|
if (!rs.next()) {
|
||||||
|
logger.log(Level.INFO, "Adding DDL for table "+ tbl);
|
||||||
|
Statement st = conn.createStatement();
|
||||||
|
File ddlFile = new File(ddl + tbl + ".ddl");
|
||||||
|
String create = "";
|
||||||
|
try {
|
||||||
|
BufferedReader r = new BufferedReader(new FileReader(ddlFile));
|
||||||
|
while (r.ready()) {
|
||||||
|
create += r.readLine() + "\n";
|
||||||
|
}
|
||||||
|
create.trim();
|
||||||
|
if( st.execute(create)) {
|
||||||
|
logger.log(Level.INFO, "Table " + tbl + " created.");
|
||||||
|
}
|
||||||
|
} catch (FileNotFoundException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.ERROR, "Error executing statement "+ create );
|
||||||
|
System.out.println(ex.getMessage());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.trace("Table "+tbl+" exists.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized boolean isConnected(boolean fail) throws SQLException {
|
||||||
|
if(conn!=null && conn.isValid(5)) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
String t = this.getClass().getClassLoader().getResource("/").toString().substring(6); // WEB-INF/classes
|
||||||
|
t += "../data/db";
|
||||||
|
logger.debug("Database directory is set to '" + t + "'");
|
||||||
|
try {
|
||||||
|
this.conn = DriverManager.getConnection("jdbc:derby:" + t + ";create=true;");
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.error(ex.getMessage(), ex);
|
||||||
|
if(!fail) {
|
||||||
|
logger.warn("Deleting database directory.");
|
||||||
|
recursiveDelete(new File(t));
|
||||||
|
logger.warn("Retrying to connect to database.");
|
||||||
|
return isConnected(true);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,6 @@
|
||||||
|
|
||||||
package net.brutex.xservices.ws;
|
package net.brutex.xservices.ws;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.jws.WebMethod;
|
import javax.jws.WebMethod;
|
||||||
|
@ -25,13 +23,10 @@ import javax.jws.WebParam;
|
||||||
import javax.jws.WebService;
|
import javax.jws.WebService;
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
||||||
import net.brutex.xservices.types.DateFormatType;
|
|
||||||
import net.brutex.xservices.types.DateTimeUnits;
|
|
||||||
import net.brutex.xservices.types.ScheduledJob;
|
import net.brutex.xservices.types.ScheduledJob;
|
||||||
import net.brutex.xservices.util.BrutexNamespaces;
|
import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
|
|
||||||
import org.apache.cxf.annotations.WSDLDocumentation;
|
import org.apache.cxf.annotations.WSDLDocumentation;
|
||||||
import org.apache.cxf.annotations.WSDLDocumentationCollection;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Job management services.
|
* Job management services.
|
||||||
|
|
|
@ -24,6 +24,7 @@ import net.brutex.xservices.types.MailMimeType;
|
||||||
import net.brutex.xservices.types.ReturnCode;
|
import net.brutex.xservices.types.ReturnCode;
|
||||||
import net.brutex.xservices.util.BrutexNamespaces;
|
import net.brutex.xservices.util.BrutexNamespaces;
|
||||||
import org.apache.cxf.annotations.WSDLDocumentation;
|
import org.apache.cxf.annotations.WSDLDocumentation;
|
||||||
|
import org.apache.cxf.annotations.WSDLDocumentationCollection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -31,16 +32,19 @@ import org.apache.cxf.annotations.WSDLDocumentation;
|
||||||
* @since 0.4.0
|
* @since 0.4.0
|
||||||
*/
|
*/
|
||||||
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
|
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
|
||||||
|
@WSDLDocumentation("Various service operations.")
|
||||||
public interface MiscService {
|
public interface MiscService {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param hostname
|
* @param hostname
|
||||||
* @return
|
* @return ReturnCode
|
||||||
*/
|
*/
|
||||||
@WebMethod(operationName = "getHostinfo")
|
@WebMethod(operationName = "getHostinfo")
|
||||||
public ReturnCode getHostinfo(@WebParam(name = "hostname") String hostname);
|
@WSDLDocumentation(value = "Get information about a host.")
|
||||||
|
public ReturnCode getHostinfo(
|
||||||
|
@WebParam(name = "hostname") String hostname);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -49,9 +53,10 @@ public interface MiscService {
|
||||||
* @param tolist
|
* @param tolist
|
||||||
* @param subject
|
* @param subject
|
||||||
* @param message
|
* @param message
|
||||||
* @return
|
* @return ReturnCode
|
||||||
*/
|
*/
|
||||||
@WebMethod(operationName = "sendMailSimple")
|
@WebMethod(operationName = "sendMailSimple")
|
||||||
|
@WSDLDocumentation(value = "Send an email (simple).")
|
||||||
public ReturnCode sendMailSimple(@WebParam(name = "mailhost") HostConnection mailhost,
|
public ReturnCode sendMailSimple(@WebParam(name = "mailhost") HostConnection mailhost,
|
||||||
@WebParam(name = "from") String from,
|
@WebParam(name = "from") String from,
|
||||||
@WebParam(name = "to") String tolist,
|
@WebParam(name = "to") String tolist,
|
||||||
|
@ -66,9 +71,10 @@ public interface MiscService {
|
||||||
* @param subject
|
* @param subject
|
||||||
* @param message
|
* @param message
|
||||||
* @param res
|
* @param res
|
||||||
* @return
|
* @return ReturnCode
|
||||||
*/
|
*/
|
||||||
@WebMethod(operationName = "sendMailSimpleWithAttachment")
|
@WebMethod(operationName = "sendMailSimpleWithAttachment")
|
||||||
|
@WSDLDocumentation(value = "Send an email with attachment (simple).")
|
||||||
public ReturnCode sendMailSimpleWithAttachment(@WebParam(name = "mailhost") HostConnection mailhost,
|
public ReturnCode sendMailSimpleWithAttachment(@WebParam(name = "mailhost") HostConnection mailhost,
|
||||||
@WebParam(name = "from") String from,
|
@WebParam(name = "from") String from,
|
||||||
@WebParam(name = "to") String tolist,
|
@WebParam(name = "to") String tolist,
|
||||||
|
@ -90,9 +96,10 @@ public interface MiscService {
|
||||||
* @param res
|
* @param res
|
||||||
* @param ssl
|
* @param ssl
|
||||||
* @param tls
|
* @param tls
|
||||||
* @return
|
* @return ReturnCode
|
||||||
*/
|
*/
|
||||||
@WebMethod(operationName = "sendMail")
|
@WebMethod(operationName = "sendMail")
|
||||||
|
@WSDLDocumentation(value = "Send an email (advanced).")
|
||||||
public ReturnCode sendMail(@WebParam(name = "mailhost") HostConnection mailhost,
|
public ReturnCode sendMail(@WebParam(name = "mailhost") HostConnection mailhost,
|
||||||
@WebParam(name = "from") String from,
|
@WebParam(name = "from") String from,
|
||||||
@WebParam(name = "to") String tolist,
|
@WebParam(name = "to") String tolist,
|
||||||
|
@ -110,14 +117,19 @@ public interface MiscService {
|
||||||
*
|
*
|
||||||
* @param minutes
|
* @param minutes
|
||||||
* @param seconds
|
* @param seconds
|
||||||
* @return
|
* @return ReturnCode
|
||||||
*/
|
*/
|
||||||
@WebMethod(operationName = "sleep")
|
@WebMethod(operationName = "sleep")
|
||||||
|
@WSDLDocumentation(value = "Delay request response a specified duration.")
|
||||||
public ReturnCode sleep(@WebParam(name = "minutes") int minutes,
|
public ReturnCode sleep(@WebParam(name = "minutes") int minutes,
|
||||||
@WebParam(name = "seconds") int seconds);
|
@WebParam(name = "seconds") int seconds);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return ReturnCode
|
||||||
|
*/
|
||||||
@WebMethod(operationName = "getInfo")
|
@WebMethod(operationName = "getInfo")
|
||||||
|
@WSDLDocumentation(value = "Get XService information.")
|
||||||
public ReturnCode getInfo();
|
public ReturnCode getInfo();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,10 +38,6 @@ import org.apache.tools.ant.taskdefs.email.EmailTask;
|
||||||
*
|
*
|
||||||
* @author Brian Rosenberger, bru@brutex.de
|
* @author Brian Rosenberger, bru@brutex.de
|
||||||
*/
|
*/
|
||||||
@WSDLDocumentationCollection({
|
|
||||||
@WSDLDocumentation("My portType documentation"),
|
|
||||||
@WSDLDocumentation(value = "My top level documentation", placement = WSDLDocumentation.Placement.TOP),
|
|
||||||
@WSDLDocumentation(value = "My binding doc", placement = WSDLDocumentation.Placement.BINDING) })
|
|
||||||
@WebService(
|
@WebService(
|
||||||
targetNamespace = BrutexNamespaces.WS_XSERVICES,
|
targetNamespace = BrutexNamespaces.WS_XSERVICES,
|
||||||
endpointInterface = "net.brutex.xservices.ws.MiscService",
|
endpointInterface = "net.brutex.xservices.ws.MiscService",
|
||||||
|
@ -49,12 +45,10 @@ import org.apache.tools.ant.taskdefs.email.EmailTask;
|
||||||
)
|
)
|
||||||
public class MiscServiceImpl implements MiscService {
|
public class MiscServiceImpl implements MiscService {
|
||||||
|
|
||||||
@WSDLDocumentation(value = "Get information about a host.")
|
|
||||||
public ReturnCode getHostinfo(String hostname) {
|
public ReturnCode getHostinfo(String hostname) {
|
||||||
return antGetHostinfo(hostname, null);
|
return antGetHostinfo(hostname, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@WSDLDocumentation(value = "Get XService information.")
|
|
||||||
public ReturnCode getInfo() {
|
public ReturnCode getInfo() {
|
||||||
ReturnCode r = new ReturnCode();
|
ReturnCode r = new ReturnCode();
|
||||||
r.returnCode = 0;
|
r.returnCode = 0;
|
||||||
|
|
Loading…
Reference in New Issue