Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Made OpenTox server prefs persisted when changed in preferences
  • Loading branch information
KlasJoensson committed Nov 15, 2012
1 parent e6d61c3 commit 27b982f
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 97 deletions.
6 changes: 6 additions & 0 deletions plugins/net.bioclipse.opentox/plugin.xml
Expand Up @@ -57,5 +57,11 @@
</property>
</AccountType>
</extension>
<extension
point="org.eclipse.core.runtime.preferences">
<initializer
class="net.bioclipse.opentox.business.OpentoxPreferenceInitializer">
</initializer>
</extension>

</plugin>
Expand Up @@ -10,22 +10,15 @@
******************************************************************************/
package net.bioclipse.opentox;

import java.util.ArrayList;
import java.util.List;

import net.bioclipse.opentox.business.IJavaOpentoxManager;
import net.bioclipse.opentox.business.IJavaScriptOpentoxManager;
import net.bioclipse.opentox.business.IOpentoxManager;
import net.bioclipse.opentox.prefs.ServicesPreferencePage;
import net.bioclipse.usermanager.business.IUserManager;

import org.apache.log4j.Logger;
import org.eclipse.core.runtime.preferences.ConfigurationScope;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.opentox.aa.opensso.OpenSSOToken;
import org.osgi.framework.BundleContext;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
import org.osgi.util.tracker.ServiceTracker;

/**
Expand All @@ -34,8 +27,6 @@
public class Activator extends AbstractUIPlugin {

public static final String PLUGIN_ID="net.bioclipse.opentox";

private static final Logger logger = Logger.getLogger(Activator.class);

/** HTTP time out in milliseconds. */
public static final Integer TIME_OUT = 5000;
Expand Down Expand Up @@ -75,88 +66,9 @@ public void start(BundleContext context) throws Exception {
null );

jsFinderTracker.open();

/*
* INITIALIZE OPENTOX SERVICES
*/

//Read in OT services from EP and preferences
openToxServices=new ArrayList<OpenToxService>();

logger.debug("Initializing OpenTox services");

//First we read from preferences
List<OpenToxService> prefss = ServiceReader.readServicesFromPreferences();
openToxServices.addAll(prefss);
logger.debug("Read " + prefss.size() + " services from prefs");

//Second, add services from EP if not in prefs (new extensions)
List<OpenToxService> epservices = ServiceReader.readServicesFromExtensionPoints();
for (OpenToxService eps : epservices){
if (!openToxServices.contains(eps)){
//TODO: Add it
openToxServices.add(eps);
logger.debug("Added new service from EP: " + eps);
}
}

Preferences preferences =
ConfigurationScope.INSTANCE
.getNode( OpenToxConstants.PLUGIN_ID );
List<String[]> toPrefs = ServicesPreferencePage.convertPreferenceStringToArraylist( preferences.get( OpenToxConstants.SERVICES, "n/a" ) );

//Save the, possibly changed, list of services to prefs
//This way we have the list openToxServices synced with the prefs
// List<String[]> toPrefs = new ArrayList<String[]>();
for (OpenToxService eps : epservices){
String[] entry = new String[3];
entry[0]=eps.getName();
entry[1]=eps.getService();
entry[2]=eps.getServiceSPARQL();

if (!listContains( toPrefs, entry ))
toPrefs.add(entry);
}

String toPrefsString = ServicesPreferencePage.convertToPreferenceString(toPrefs);

//Save the serialized services to preferences
preferences.put( OpenToxConstants.SERVICES, toPrefsString );
try {
preferences.flush();
} catch ( BackingStoreException e ) {
logger.error( e.getMessage() );
e.printStackTrace();
}

logger.debug("Saved the serialized services prefs string: " + toPrefsString);

logger.debug("OpenTox initialization ended");


}

/* This method is written 'cos using "toPrefs.contains( entry )" in the if-
* statement on line 117 above didn't worked. */
private boolean listContains(List<String[]> list, String[] item) {
boolean found = false, itemEquals;
for (String[] listItem : list) {
itemEquals = false;
for (int i = 0; i < listItem.length; i++) {
if (item[i] == null || item[i].isEmpty()) {
if (listItem[i].equals( "NA" ) || listItem[i].isEmpty() )
itemEquals = true;
} else if (listItem[i].equals( item[i] ) )
itemEquals = true;
else
itemEquals = false;
}
if (itemEquals)
found = true;
}

return found;
}

public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
Expand Down
@@ -0,0 +1,82 @@
package net.bioclipse.opentox.business;

import java.util.ArrayList;
import java.util.List;

import net.bioclipse.opentox.Activator;
import net.bioclipse.opentox.OpenToxConstants;
import net.bioclipse.opentox.OpenToxService;
import net.bioclipse.opentox.ServiceReader;
import net.bioclipse.opentox.prefs.ServicesPreferencePage;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;


public class OpentoxPreferenceInitializer extends AbstractPreferenceInitializer {

private static final Logger logger = Logger
.getLogger(OpentoxPreferenceInitializer.class);

@Override
public void initializeDefaultPreferences() {

logger.debug("Initializing OpenTox services");

//A list of OpenTox services in order
List<OpenToxService> openToxServices = new ArrayList<OpenToxService>();
List<String[]> toPrefs = new ArrayList<String[]>();

Preferences preferences =
DefaultScope.INSTANCE
.getNode( OpenToxConstants.PLUGIN_ID );

// Get the (new) services from the extension point.
List<OpenToxService> epservices = ServiceReader
.readServicesFromExtensionPoints();
for (OpenToxService eps : epservices){
if (!openToxServices.contains(eps)){
openToxServices.add(eps);
logger.debug("Added new service from EP: " + eps);
}
}

// Read the data from the services and serialize it
for (OpenToxService eps : epservices){
String[] entry = new String[3];
entry[0]=eps.getName();
entry[1]=eps.getService();
entry[2]=eps.getServiceSPARQL();
toPrefs.add( entry );
}
String toPrefsString = ServicesPreferencePage
.convertToPreferenceString(toPrefs);

//Save the serialized services to preferences
preferences.put( OpenToxConstants.SERVICES, toPrefsString );
try {
preferences.flush();
} catch ( BackingStoreException e ) {
logger.error( e.getMessage() );
e.printStackTrace();
}

logger.debug("Saved the serialized services prefs string: " +
toPrefsString);

Preferences node = DefaultScope.INSTANCE.getNode(Activator.PLUGIN_ID);
node.put( OpenToxConstants.SERVICES, toPrefsString );
try {
node.flush();
} catch ( BackingStoreException e ) {
logger.error( e.getMessage() );
e.printStackTrace();
}
logger.debug( "Sat the loaded services as default" );

logger.debug("OpenTox initialization ended");
}

}
Expand Up @@ -155,7 +155,6 @@ public String[] getServiceInfo() {
return serviceInfo;
}


@Override
protected boolean isResizable() {
return true;
Expand Down
Expand Up @@ -20,8 +20,8 @@

import org.apache.log4j.Logger;
import org.eclipse.core.runtime.preferences.ConfigurationScope;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
Expand Down Expand Up @@ -214,10 +214,9 @@ public void mouseUp(MouseEvent e) {
* we'll get an unexpected ArrayIndexOutOfBoundsException in
* some cases, 'cos the last element is missing in the selection */
if (chosen.length < 3) {
String[] temp = {"NA", "NA", "NA"};
for (int i = 0; i < chosen.length; i++)
temp[i] = chosen[i];
chosen = temp;
for(int i= chosen.length;i<3;i++) {
chosen[i] = "NA";
}
}

ServicesEditDialog dlg=new ServicesEditDialog(getShell(), chosen[0], chosen[1], chosen[2]);
Expand Down Expand Up @@ -313,7 +312,6 @@ public boolean performOk() {
public static List<String[]> getPreferencesFromStore() {

String entireString=preferences.get( OpenToxConstants.SERVICES, "n/a" );

return convertPreferenceStringToArraylist(entireString);
}

Expand All @@ -323,7 +321,10 @@ public static List<String[]> getPreferencesFromStore() {
*
*/
public static List<String[]> getDefaultPreferencesFromStore() {
String entireString=preferences.get( OpenToxConstants.SERVICES, "n/a" );

Preferences node = DefaultScope.INSTANCE.getNode(Activator.PLUGIN_ID);
String entireString = node.get( OpenToxConstants.SERVICES, "n/a" );

return convertPreferenceStringToArraylist(entireString);
}

Expand Down

0 comments on commit 27b982f

Please sign in to comment.