001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026: package com.sun.midp.midletsuite;
027:
028: import com.sun.midp.log.LogChannels;
029: import com.sun.midp.log.Logging;
030: import com.sun.midp.security.Permissions;
031:
032: import java.io.DataInputStream;
033: import java.io.IOException;
034: import javax.microedition.io.Connector;
035:
036: /**
037: * The settings for the suite.
038: */
039: public class SuiteSettings {
040:
041: /** Permissions for this suite. */
042: byte[] permissions;
043:
044: /** Can this MIDlet suite interrupt other suites. */
045: byte pushInterruptSetting;
046:
047: /** Push options. */
048: int pushOptions;
049:
050: /** The ID of this suite. */
051: int suiteId;
052:
053: /** If true, MIDlet from this suite can be run. */
054: boolean enabled;
055:
056: /**
057: * Public constructor for SuiteSettings.
058: *
059: * @param id of the suite for these settings
060: */
061: public SuiteSettings(int id) {
062: suiteId = id;
063: enabled = true; /* default is to enable a newly installed suite */
064: permissions = Permissions.getEmptySet();
065: }
066:
067: /**
068: * Gets list of permissions for this suite.
069: *
070: * @return array of permissions from {@link Permissions}
071: * @see #setPermissions
072: */
073: public byte[] getPermissions() {
074: return permissions;
075: }
076:
077: /**
078: * Sets new permissions for the suite.
079: *
080: * @param newPermissions for the suite
081: * @see #getPermissions
082: *
083: */
084: public void setPermissions(byte[] newPermissions) {
085: permissions = newPermissions;
086: }
087:
088: /**
089: * Gets push setting for interrupting other MIDlets.
090: *
091: * @return push setting for interrupting MIDlets the value
092: * will be permission level from {@link Permissions}
093: * @see #setPushInterruptSetting
094: */
095: public byte getPushInterruptSetting() {
096: return pushInterruptSetting;
097: }
098:
099: /**
100: * Sets new PushInterruptSetting for the suite.
101: *
102: * @param newSetting for the suite
103: * @see #getPushInterruptSetting
104: *
105: */
106: public void setPushInterruptSetting(byte newSetting) {
107: pushInterruptSetting = newSetting;
108: }
109:
110: /**
111: * Gets push options for the suite from persistent store.
112: *
113: * @return push options are defined in {@link PushRegistryImpl}
114: * @see #setPushOptions
115: */
116: public int getPushOptions() {
117: return pushOptions;
118: }
119:
120: /**
121: * Sets new PushOptions for the suite.
122: *
123: * @param newOption for the suite
124: * @see #getPushOptions
125: *
126: */
127: public void setPushOptions(int newOption) {
128: pushOptions = newOption;
129: }
130:
131: /**
132: * Gets the unique ID of the suite.
133: *
134: * @return suite ID
135: */
136: public int getSuiteId() {
137: return suiteId;
138: }
139:
140: /**
141: * Determine if the a MIDlet from this suite can be run. Note that
142: * disable suites can still have their settings changed and their
143: * install info displayed.
144: *
145: * @return true if suite is enabled, false otherwise
146: */
147: public boolean isEnabled() {
148: return enabled;
149: }
150:
151: /**
152: * Gets the suite settings suite from persistent store.
153: */
154: native void load();
155:
156: /**
157: * Saves the suite settings to persistent store. Except the enabled
158: * state.
159: */
160: void save() {
161: try {
162: save0(suiteId, pushInterruptSetting, pushOptions,
163: permissions);
164: } catch (IOException ioe) {
165: if (Logging.REPORT_LEVEL <= Logging.WARNING) {
166: Logging.report(Logging.WARNING, LogChannels.LC_AMS,
167: "SuiteSettings.save0() threw IOException");
168: }
169: }
170: }
171:
172: /**
173: * Saves the suite settings to persistent store.
174: *
175: * @throws IOException if an I/O error occurs
176: */
177: private native void save0(int suiteId, byte pushInterruptSetting,
178: int pushOptions, byte[] permissions) throws IOException;
179: }
|