You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by fu...@apache.org on 2005/01/07 20:32:39 UTC

svn commit: r124561 - /incubator/derby/code/trunk/build.xml /incubator/derby/code/trunk/java/build/org/apache/derbyBuild/eclipse /incubator/derby/code/trunk/java/build/org/apache/derbyBuild/eclipse/DerbyEclipsePlugin.java

Author: fuzzylogic
Date: Fri Jan  7 11:32:37 2005
New Revision: 124561

URL: http://svn.apache.org/viewcvs?view=rev&rev=124561
Log:
Build target for building an Eclipse plugin with the Derby jars.

Committed for Rajesh Kartha (kartha@Source-Zone.org)

Added:
   incubator/derby/code/trunk/java/build/org/apache/derbyBuild/eclipse/
   incubator/derby/code/trunk/java/build/org/apache/derbyBuild/eclipse/DerbyEclipsePlugin.java
Modified:
   incubator/derby/code/trunk/build.xml

Modified: incubator/derby/code/trunk/build.xml
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/build.xml?view=diff&rev=124561&p1=incubator/derby/code/trunk/build.xml&r1=124560&p2=incubator/derby/code/trunk/build.xml&r2=124561
==============================================================================
--- incubator/derby/code/trunk/build.xml	(original)
+++ incubator/derby/code/trunk/build.xml	Fri Jan  7 11:32:37 2005
@@ -591,6 +591,45 @@
   </target>
 
 <!-- =================================================================== -->
+<!-- Eclipse Plugin                                                     -->
+<!-- =================================================================== -->
+  <target name="plugin" depends= "buildjars">
+       <echo message="Begining Derby Eclipse plugin build"/>
+       <property name="plugin.tmp.dir" value ="plugintmp"/>
+       <mkdir dir="${derby.jar.dir}/${plugin.tmp.dir}"/>
+
+       <java classname="org.apache.derbyBuild.eclipse.DerbyEclipsePlugin">
+               <arg value="${derby.jar.dir}/${plugin.tmp.dir}"/>
+               <classpath>
+                       <pathelement path="${out.dir}"/>
+               </classpath>
+       </java>
+
+       <property file="${derby.jar.dir}/${plugin.tmp.dir}/plugintmp.properties"/>
+       <echo message="Derby Eclipse plugin build: ${plugin.derby.version.build.number}"/>
+
+       <property name="plugin.dir" value ="plugins"/>
+       <property name="plugin.core.dir" value ="${plugin.derby.core}_${plugin.derby.version}"/>
+
+       <mkdir dir="${derby.jar.dir}/${plugin.tmp.dir}/${plugin.dir}/${plugin.core.dir}"/>
+
+       <copy todir="${derby.jar.dir}/${plugin.tmp.dir}/${plugin.dir}/${plugin.core.dir}">
+               <fileset dir="${derby.jar.dir}" includes="derby*.jar" excludes="derbyTesting.jar,derbyLocale*.jar"/>
+       </copy>
+       <copy todir="${derby.jar.dir}/${plugin.tmp.dir}/${plugin.dir}/${plugin.core.dir}">
+               <fileset dir="${derby.jar.dir}/${plugin.tmp.dir}" includes="plugin*.xml"/>
+       </copy>
+
+       <delete file="${derby.jar.dir}/${plugin.tmp.dir}/plugintmp.properties"/>
+       <delete file="${derby.jar.dir}/${plugin.tmp.dir}/plugin.xml"/>
+
+       <!-- ZIP to create the final Derby plug-in -->
+
+       <zip zipfile="${derby.jar.dir}/${plugin.derby.core.zipfile}_${plugin.derby.version}.zip" compress="true" basedir="${derby.jar.dir}/${plugin.tmp.dir}"/>
+       <delete dir="${derby.jar.dir}/${plugin.tmp.dir}"/>
+  </target>
+
+<!-- =================================================================== -->
 <!--                               Jar targets                           -->
 <!-- =================================================================== -->
 

Added: incubator/derby/code/trunk/java/build/org/apache/derbyBuild/eclipse/DerbyEclipsePlugin.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/build/org/apache/derbyBuild/eclipse/DerbyEclipsePlugin.java?view=auto&rev=124561
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/build/org/apache/derbyBuild/eclipse/DerbyEclipsePlugin.java	Fri Jan  7 11:32:37 2005
@@ -0,0 +1,180 @@
+/*
+
+   Derby - Class org.apache.derbyBuild.eclipse.DerbyEclipsePlugin
+
+   Copyright 2002, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   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 org.apache.derbyBuild.eclipse;
+
+import java.util.*;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.InputStream;
+import org.apache.derby.iapi.services.info.ProductGenusNames;
+import org.apache.derby.iapi.services.info.PropertyNames;
+
+/**
+ * This class provides the functionality to create the build related
+ * related properties, which are used for creating the Derby plug-in
+ * for Eclipse by the ANT script.
+ *
+ * - The Eclipse plugin will be called 'Apache Derby Core Plug-in for Eclipse'
+ *
+ * - The plugin can be build from the main build.xml using 'ant' with the 'plugin'
+ *   argument.
+ *
+ * - The package name for the Derby plug-in will
+ *   be: org.apache.derby.core_<major>.<minor>.<interim> (example: org.apache.derby.core_10.1.0).
+ *
+ * - The plugin.xml in the Derby plug-in will show the actual version of the
+ *   the Derby build (example: 10.1.0.0 (111545M) ). This can be viewed from
+ *   Help - About Eclipse Platform - Plug-in Details of Eclipse of the Eclipse IDE
+ *
+ * - The zip file created for the DerbyEclipse under the jars directory will have the name:
+ *   derby_core_plugin_<major>.<minor>.<interim>.zip (example:derby_core_plugin_10.1.0.zip)
+ *
+ * - The current packaging includes derby.jar, derbynet.jar and
+ *   derbytools.jar. The locale jars for Derby are not included yet.
+ *
+ * @author Rajesh Kartha
+ */
+public class DerbyEclipsePlugin{
+	/*
+	 * Derby plug-in package property and name
+	 */
+	private static String PLUGIN_PKG="plugin.derby.core";
+	private static String PLUGIN_PKG_NAME="org.apache.derby.core";
+	/*
+	 * Derby plug-in zip file property and name
+	 */
+	private static String PLUGIN_ZIP_FILE="plugin.derby.core.zipfile";
+	private static String PLUGIN_ZIP_FILE_NAME="derby_core_plugin";
+	/*
+	 * Derby plug-in build properties and name
+	 */
+	private static String PLUGIN_VERSION="plugin.derby.version";
+	private static String PLUGIN_VERSION_BUILD_NUMBER="plugin.derby.version.build.number";
+	private static int MAINT_DIV=1000000;
+
+	/*
+	 * plugin.xml file information, split into three parts
+	 */
+	private static String part_1="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+
+				      "<?eclipse version=\"3.0\"?> \n"+
+				      "<plugin \n" +
+   				      "\t id=\"org.apache.derby.core\" \n" +
+   				      "\t name=\"Apache Derby Core Plug-in for Eclipse\" \n" +
+   				      "\t version=\"";
+
+	private static String part_2="\n\t provider-name=\"";
+	private static String part_3="\n\t <runtime> \n" +
+      				      "\t\t <library name=\"derby.jar\"> \n" +
+         			      "\t\t\t <export name=\"*\"/> \n" +
+      				      "\t\t </library> \n" +
+      				      "\t\t <library name=\"derbytools.jar\"> \n"+
+         			      "\t\t\t <export name=\"*\"/> \n"+
+      				      "\t\t </library> \n"+
+      				      "\t\t <library name=\"derbynet.jar\"> \n"+
+         			      "\t\t\t <export name=\"*\"/> \n"+
+      				      "\t\t </library> \n"+
+   				      "\t </runtime> \n"+
+   				      "\t <requires> \n"+
+   				      "\t </requires> \n"+
+   				      "</plugin>";
+
+	private String version="";
+	private String tmpPropFile="plugintmp.properties";
+	private static File tmpFileLocation=null;
+	private static Properties tmpProp=new Properties();
+	private String pluginXMLFile="plugin.xml";
+
+	/*
+	 * The public main() method to test the working of this class. A valid destination
+	 * String is all that is needed as an argument for running this class.
+	 * <p>
+	 * example: java DerbyEclipsePlugin <destination>
+	 * <p>
+	 */
+
+	public static void main(String [] args){
+		if(args.length<=0){
+			System.out.println("Incorrect number of arguments.");
+			return;
+		}
+		try{
+			tmpFileLocation=new File(args[0]);
+			DerbyEclipsePlugin dep = new DerbyEclipsePlugin();
+			dep.getProps();
+			dep.createTmpFiles();
+		}catch(Exception e)
+		{
+			e.printStackTrace();
+		}
+
+
+
+
+	}
+	/*
+	 * For internal use only.
+	 * getProps() generates the required Properties from the DBMS.properties file.
+	 *
+	 * @exception	Exception if there is an error
+	 */
+	private void getProps() throws Exception{
+		InputStream versionStream = getClass().getResourceAsStream(ProductGenusNames.DBMS_INFO);
+		Properties prop=new Properties();
+		prop.load(versionStream);
+
+		//create the tmp Prop file
+		tmpProp.put(PLUGIN_PKG,PLUGIN_PKG_NAME);			//package name
+		tmpProp.put(PLUGIN_ZIP_FILE,PLUGIN_ZIP_FILE_NAME);	//zip file name
+		tmpProp.put(PropertyNames.PRODUCT_VENDOR_NAME,prop.getProperty(PropertyNames.PRODUCT_VENDOR_NAME));
+		int maint=Integer.parseInt(prop.getProperty(PropertyNames.PRODUCT_MAINT_VERSION));
+		version=prop.getProperty(PropertyNames.PRODUCT_MAJOR_VERSION)+"."+prop.getProperty(PropertyNames.PRODUCT_MINOR_VERSION)+"."+maint/MAINT_DIV;
+		tmpProp.put(PLUGIN_VERSION,version);
+
+		//initially thought of using
+		//version+="."+maint%MAINT_DIV+"_v"+prop.getProperty(PropertyNames.PRODUCT_BUILD_NUMBER);
+		version+="."+maint%MAINT_DIV+" ("+prop.getProperty(PropertyNames.PRODUCT_BUILD_NUMBER)+")";
+		tmpProp.put(PLUGIN_VERSION_BUILD_NUMBER,version);
+
+		//add info to plugin.xml strings
+		part_1+=version+"\"";
+		part_2+=tmpProp.getProperty(PropertyNames.PRODUCT_VENDOR_NAME)+"\">\n";
+
+	}
+	/*
+	 * For internal use only.
+	 * createTmpFiles() create the temporary files with the build properties at the specified location.
+	 *
+	 * @exception	Exception if there is an error
+	 */
+	private void createTmpFiles() throws Exception{
+		File file=new File(tmpFileLocation.getAbsolutePath()+File.separator+tmpPropFile);
+		FileOutputStream fo=new FileOutputStream(file);
+		tmpProp.store(fo,null);
+		fo.close();
+		file=new File(tmpFileLocation.getAbsolutePath()+File.separator+pluginXMLFile);
+		FileWriter fw=new FileWriter(file);
+		fw.write(part_1+part_2+part_3);
+		fw.close();
+
+	}
+}
+