001: /*
002: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
004: *
005: * This program is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU General Public License version
007: * 2 only, as published by the Free Software Foundation.
008: *
009: * This program is distributed in the hope that it will be useful, but
010: * WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * General Public License version 2 for more details (a copy is
013: * included at /legal/license.txt).
014: *
015: * You should have received a copy of the GNU General Public License
016: * version 2 along with this work; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
018: * 02110-1301 USA
019: *
020: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
021: * Clara, CA 95054 or visit www.sun.com if you need additional
022: * information or have any questions.
023: */
024:
025: package com.sun.jumpimpl.module.installer;
026:
027: import com.sun.jump.common.JUMPAppModel;
028: import com.sun.jump.common.JUMPApplication;
029: import com.sun.jump.module.installer.JUMPInstallerModule;
030: import java.net.URL;
031: import java.util.Vector;
032:
033: /**
034: * MAINInstallerImpl subclasses XLETInstallerImpl because the behavior of both
035: * the XLET and Main installers are very similar. The methods defined below
036: * are the minimun amount of methods needed to be overridden to match the
037: * current expected behavior of main application installation.
038: */
039: public class MAINInstallerImpl extends XLETInstallerImpl implements
040: JUMPInstallerModule {
041: protected final static String DESCRIPTOR_INITIALCLASS_KEY = "mainClass";
042:
043: /**
044: *
045: * Create a JUMPApplication object
046: * @param bundle Name of application bundle that this application belongs to
047: * @param clazz Initial class of application
048: * @param classPathURL URL of the classpath of this application
049: * @param title The user visible title of this application
050: * @param iconPathURL URL to the path of the icon for this application
051: * @return application object
052: */
053: protected JUMPApplication createJUMPApplicationObject(
054: String bundle, String clazz, URL classPathURL,
055: String title, URL iconPathURL, int id) {
056: return new MAINApplication(contentStoreDir, bundle, clazz,
057: classPathURL, title, iconPathURL, id);
058: }
059:
060: /**
061: * Return the app model described by this class.
062: * @return the appmodel of the class
063: */
064: protected JUMPAppModel getInstallerAppModel() {
065: return JUMPAppModel.MAIN;
066: }
067:
068: /**
069: * Get the key value used to retrive the initialClass value
070: * @return string pertaining to key representing initialClass
071: */
072: protected String getInstallerInitialClassKey() {
073: return "mainClass";
074: }
075:
076: /**
077: * Get the key value used to specify an application's initial class from Properties object
078: * @return initial class key value
079: */
080: protected String getPropertyInstallerInitialClassKey() {
081: return MAINApplication.INITIAL_CLASS_KEY;
082: }
083:
084: /**
085: * Get the name of the bundle this application belongs to
086: * @param app application object
087: * @return bundle Name of application bundle that this application belongs to
088: */
089: protected String getBundleName(JUMPApplication app) {
090: MAINApplication mainApp = (MAINApplication) app;
091: return mainApp.getBundle();
092: }
093:
094: /**
095: * Retrieve the application object belonging to the bundle
096: * @param bundle Name of application bundle that this application belongs to
097: * @return application objects within the bundle
098: */
099: protected JUMPApplication[] getAppsInBundle(String bundle) {
100: JUMPApplication[] apps = (JUMPApplication[]) getInstalled();
101: Vector appsVector = new Vector();
102: for (int i = 0; i < apps.length; i++) {
103: MAINApplication mainApp = (MAINApplication) apps[i];
104: if (mainApp.getBundle().equals(bundle)) {
105: appsVector.add(apps[i]);
106: }
107: }
108: Object[] objs = appsVector.toArray();
109: JUMPApplication[] bundleApps = new JUMPApplication[objs.length];
110: for (int i = 0; i < objs.length; i++) {
111: bundleApps[i] = (JUMPApplication) objs[i];
112: }
113: return bundleApps;
114: }
115:
116: /**
117: * Retrieve the classpath value of the appliation
118: * @param app the application object
119: * @return string value of classpath
120: */
121: protected String getAppClasspath(JUMPApplication app) {
122: if (app == null) {
123: return null;
124: }
125: MAINApplication mainApp = (MAINApplication) app;
126: return mainApp.getClasspath().getFile();
127: }
128: }
|