();
- infoList.add(iinfo);
- mgr.setInfos(infoList);
- } else {
- if (retry) {
- throw new Exception(
- "Could not find python on PATH, be sure to set environment variable");
- } else {
- continue;
- }
- }
- }
- // We made it here? success!
- break;
- }
- } catch (Throwable t) {
- statusHandler.handle(
- Priority.PROBLEM,
- "Error setting up python interpreter: "
- + t.getLocalizedMessage(), t);
- }
+ PydevSetup.preparePydev();
}
@Override
diff --git a/cave/com.raytheon.uf.viz.localization.perspective/src/com/raytheon/uf/viz/localization/perspective/PydevSetup.java b/cave/com.raytheon.uf.viz.localization.perspective/src/com/raytheon/uf/viz/localization/perspective/PydevSetup.java
new file mode 100644
index 0000000000..718369013c
--- /dev/null
+++ b/cave/com.raytheon.uf.viz.localization.perspective/src/com/raytheon/uf/viz/localization/perspective/PydevSetup.java
@@ -0,0 +1,212 @@
+/**
+ * This software was developed and / or modified by Raytheon Company,
+ * pursuant to Contract DG133W-05-CQ-1067 with the US Government.
+ *
+ * U.S. EXPORT CONTROLLED TECHNICAL DATA
+ * This software product contains export-restricted data whose
+ * export/transfer/disclosure is restricted by U.S. law. Dissemination
+ * to non-U.S. persons whether in the United States or abroad requires
+ * an export license or other authorization.
+ *
+ * Contractor Name: Raytheon Company
+ * Contractor Address: 6825 Pine Street, Suite 340
+ * Mail Stop B8
+ * Omaha, NE 68106
+ * 402.291.0100
+ *
+ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for
+ * further licensing information.
+ **/
+package com.raytheon.uf.viz.localization.perspective;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.python.pydev.core.IInterpreterInfo;
+import org.python.pydev.core.IInterpreterManager;
+import org.python.pydev.core.docutils.StringUtils;
+import org.python.pydev.editor.PydevShowBrowserMessage;
+import org.python.pydev.plugin.PydevPlugin;
+import org.python.pydev.runners.SimplePythonRunner;
+import org.python.pydev.shared_core.structure.Tuple;
+import org.python.pydev.ui.pythonpathconf.InterpreterInfo;
+
+import com.python.pydev.analysis.AnalysisPlugin;
+import com.raytheon.uf.common.status.IUFStatusHandler;
+import com.raytheon.uf.common.status.UFStatus;
+import com.raytheon.uf.common.status.UFStatus.Priority;
+import com.raytheon.uf.common.util.FileUtil;
+
+/**
+ * Utilities that configure pydev to work properly in the Viz Localization
+ * Perspective. Works around deficiencies in the pydev code.
+ *
+ *
+ *
+ * SOFTWARE HISTORY
+ *
+ * Date Ticket# Engineer Description
+ * ------------ ---------- ----------- --------------------------
+ * May 1, 2013 1967 njensen Initial creation
+ *
+ *
+ *
+ * @author njensen
+ * @version 1.0
+ */
+
+public class PydevSetup {
+
+ private static final IUFStatusHandler statusHandler = UFStatus
+ .getHandler(PydevSetup.class);
+
+ /**
+ * Prepares pydev to be used in the localization perspective with as few
+ * annoyances as possible.
+ */
+ public static void preparePydev() {
+ preventFundingPopup();
+ initializeInterpreter();
+ }
+
+ /**
+ * Attempts to initialize the python interpreter based on the PATH
+ * environment, saving the user the trouble of initializing it through the
+ * preference page.
+ */
+ public static void initializeInterpreter() {
+ try {
+ // Attempt the initialization twice before reporting errors,
+ // sometimes it can fail unexpectedly and recover a second time.
+ // Goal is to auto setup python interpreter to use for editing
+ // python files
+ for (int i = 0; i < 2; ++i) {
+ boolean retry = i > 0;
+ // Setup python environment for pydev
+ IInterpreterManager mgr = PydevPlugin
+ .getPythonInterpreterManager();
+ String persistedStr = mgr.getPersistedString();
+ if ((persistedStr == null) || "".equals(persistedStr.trim())) {
+ IInterpreterInfo iinfo = null;
+ String pathToFile = null;
+ String LD_PATH = System.getenv("PATH");
+ String[] folders = LD_PATH.split(File.pathSeparator); // Win32
+ for (String folder : folders) {
+ File python = new File(folder, "python");
+ if (python.exists() && python.isFile()
+ && python.canExecute()) {
+ pathToFile = python.getAbsolutePath();
+ break;
+ }
+ }
+
+ if (pathToFile != null) {
+ try {
+ // Taken from pydev source to get rid of UI prompt
+ File script = PydevPlugin
+ .getScriptWithinPySrc("interpreterInfo.py");
+ Tuple outTup = new SimplePythonRunner()
+ .runAndGetOutputWithInterpreter(pathToFile,
+ script.getAbsolutePath(), null,
+ null, null,
+ new NullProgressMonitor(), null);
+ iinfo = InterpreterInfo
+ .fromString(outTup.o1, false);
+ // end taken
+ } catch (Throwable e) {
+ if (retry) {
+ throw e;
+ }
+ continue;
+ }
+ if (iinfo == null) {
+ if (retry) {
+ throw new Exception(
+ "Could not generate python info, python editors may not function 100%");
+ } else {
+ continue;
+ }
+ }
+ IInterpreterInfo[] infoList = new IInterpreterInfo[] { iinfo };
+ setupStupidFile(mgr, iinfo);
+ mgr.setInfos(infoList, null, null);
+ } else {
+ if (retry) {
+ throw new Exception(
+ "Could not find python on PATH, be sure to set environment variable");
+ } else {
+ continue;
+ }
+ }
+ }
+
+ // We made it here? success!
+ break;
+ }
+ } catch (Throwable t) {
+ statusHandler.handle(
+ Priority.PROBLEM,
+ "Error setting up python interpreter: "
+ + t.getLocalizedMessage(), t);
+ }
+
+ }
+
+ /**
+ * Initializes a file to prevent pydev from sending out an error message
+ * that is not actually an error. Pydev looks for a particular file and if
+ * it does not exist, sends an error. However, if the file exists but has
+ * the wrong contents, it only sends out an info. Either way, pydev
+ * continues on and takes care of things, so the error message is useless.
+ * This code is derived from pydev's AdditionalSystemInterpreterInfo
+ * constructor.
+ *
+ * @param manager
+ * @param info
+ */
+ private static void setupStupidFile(IInterpreterManager manager,
+ IInterpreterInfo info) {
+ try {
+ File base = null;
+ IPath stateLocation = AnalysisPlugin.getDefault()
+ .getStateLocation();
+ base = stateLocation.toFile();
+
+ String additionalInfoInterpreter = info.getExecutableOrJar();
+ File file = new File(
+ base,
+ manager.getManagerRelatedName()
+ + "_"
+ + StringUtils
+ .getExeAsFileSystemValidPath(additionalInfoInterpreter));
+
+ if (!file.exists()) {
+ file.mkdirs();
+
+ File persistingFolder = file;
+ File persistingLocation = new File(persistingFolder,
+ manager.getManagerRelatedName() + ".pydevsysteminfo");
+ FileUtil.bytes2File(new byte[0], persistingLocation);
+ }
+ } catch (IOException e) {
+ // no need to log this notably since this whole method only exists
+ // to prevent a stupid error message from being seen
+ statusHandler.debug(e.getLocalizedMessage());
+ }
+ }
+
+ /**
+ * Sets the preference value to prevent pydev from popping up the dialog
+ * that requests money for the developer's personal projects
+ */
+ public static void preventFundingPopup() {
+ IPreferenceStore pydevPrefStore = PydevPlugin.getDefault()
+ .getPreferenceStore();
+ pydevPrefStore.setValue(PydevShowBrowserMessage.PYDEV_FUNDING_SHOWN,
+ "true");
+ }
+
+}
diff --git a/cave/com.raytheon.uf.viz.localization.perspective/src/com/raytheon/uf/viz/localization/perspective/view/FileTreeView.java b/cave/com.raytheon.uf.viz.localization.perspective/src/com/raytheon/uf/viz/localization/perspective/view/FileTreeView.java
index b605755bfa..73699f3b3a 100644
--- a/cave/com.raytheon.uf.viz.localization.perspective/src/com/raytheon/uf/viz/localization/perspective/view/FileTreeView.java
+++ b/cave/com.raytheon.uf.viz.localization.perspective/src/com/raytheon/uf/viz/localization/perspective/view/FileTreeView.java
@@ -132,6 +132,7 @@ import com.raytheon.uf.viz.localization.service.ILocalizationService;
* May 26, 2010 mnash Initial creation
* Feb 13, 2013 1610 mschenke Fixed null pointer by repopulating LocalizationFileGroupData
* objects even if they weren't expanded
+ * May 1st, 2013 1967 njensen Fix for pydev 2.7
*
*
*
@@ -1235,7 +1236,8 @@ public class FileTreeView extends ViewPart implements IPartListener2,
IFolder folder = (IFolder) parentData.getResource();
IResource rsc = null;
if (file != null) {
- rsc = folder.getFile(fileItem.getText() + " - "
+ rsc = folder.getFile(file.getContext().getLocalizationLevel() + "_"
+ + file.getContext().getContextName() + "_"
+ parentItem.getText());
} else {
rsc = createFolder(folder, fileItem.getText());
@@ -1423,26 +1425,30 @@ public class FileTreeView extends ViewPart implements IPartListener2,
@Override
public void resourceChanged(IResourceChangeEvent event) {
for (IEditorReference ref : getSite().getPage().getEditorReferences()) {
- IEditorInput editorInput = ref.getEditor(false).getEditorInput();
- if (editorInput instanceof LocalizationEditorInput) {
- LocalizationEditorInput input = (LocalizationEditorInput) editorInput;
- IFile inputFile = input.getFile();
- IResourceDelta rootDelta = event.getDelta();
- IResourceDelta docDelta = rootDelta.findMember(inputFile
- .getFullPath());
- if (docDelta != null
- && docDelta.getKind() == IResourceDelta.CHANGED
- && (docDelta.getFlags() & IResourceDelta.CONTENT) == IResourceDelta.CONTENT) {
- try {
- LocalizationFile file = input.getLocalizationFile();
- if (file.getContext().getLocalizationLevel()
- .isSystemLevel() == false) {
- input.getLocalizationFile().save();
+ IEditorPart part = ref.getEditor(false);
+ if (part != null) {
+ IEditorInput editorInput = part.getEditorInput();
+ if (editorInput instanceof LocalizationEditorInput) {
+ LocalizationEditorInput input = (LocalizationEditorInput) editorInput;
+ IFile inputFile = input.getFile();
+ IResourceDelta rootDelta = event.getDelta();
+ IResourceDelta docDelta = rootDelta.findMember(inputFile
+ .getFullPath());
+ if (docDelta != null
+ && docDelta.getKind() == IResourceDelta.CHANGED
+ && (docDelta.getFlags() & IResourceDelta.CONTENT) == IResourceDelta.CONTENT) {
+ try {
+ LocalizationFile file = input.getLocalizationFile();
+ if (file.getContext().getLocalizationLevel()
+ .isSystemLevel() == false) {
+ input.getLocalizationFile().save();
+ }
+ } catch (LocalizationOpFailedException e) {
+ statusHandler.handle(
+ Priority.PROBLEM,
+ "Error saving file: "
+ + e.getLocalizedMessage(), e);
}
- } catch (LocalizationOpFailedException e) {
- statusHandler
- .handle(Priority.PROBLEM, "Error saving file: "
- + e.getLocalizedMessage(), e);
}
}
}
diff --git a/cave/com.raytheon.uf.viz.product.alertviz/alertviz.product b/cave/com.raytheon.uf.viz.product.alertviz/alertviz.product
index 22fe0dfd63..f27bbd425f 100644
--- a/cave/com.raytheon.uf.viz.product.alertviz/alertviz.product
+++ b/cave/com.raytheon.uf.viz.product.alertviz/alertviz.product
@@ -20,7 +20,18 @@ Developed on the Raytheon Visualization Environment (viz)
-data @user.home/caveData -user @user.home/caveData -clean
-consoleLog
- -Xincgc -Xms16M -Xmx256M -Xss2024k -Dosgi.instance.area.readOnly=true -Dosgi.hook.configurators.exclude=org.eclipse.core.runtime.internal.adaptor.EclipseLogHook,org.eclipse.core.runtime.internal.adaptor.EclipseErrorHandler -Dorg.eclipse.update.reconcile=false -Dqpid.dest_syntax=BURL -Dorg.eclipse.update.reconcile=false -XX:MaxPermSize=128m -Dorg.eclipse.ui/KEY_CONFIGURATION_ID=com.raytheon.viz.ui.awips.scheme -Dawips.mode=pypies -Dqpid.dest_syntax=BURL -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dlog4j.configuration=log4j-alertviz.xml
+ -Xincgc -Xms16M -Xmx256M -Xss2024k
+-Dosgi.instance.area.readOnly=true
+-Declipse.log.enabled=false
+-Dorg.eclipse.update.reconcile=false
+-Dqpid.dest_syntax=BURL
+-Dorg.eclipse.update.reconcile=false
+-XX:MaxPermSize=128m
+-Dorg.eclipse.ui/KEY_CONFIGURATION_ID=com.raytheon.viz.ui.awips.scheme
+-Dqpid.dest_syntax=BURL
+-Dcom.sun.management.jmxremote.authenticate=false
+-Dcom.sun.management.jmxremote.ssl=false
+-Dlog4j.configuration=log4j-alertviz.xml
diff --git a/cave/com.raytheon.viz.feature.awips/feature.xml b/cave/com.raytheon.viz.feature.awips/feature.xml
index 21adf22e07..f377d7db94 100644
--- a/cave/com.raytheon.viz.feature.awips/feature.xml
+++ b/cave/com.raytheon.viz.feature.awips/feature.xml
@@ -219,7 +219,7 @@
unpack="false"/>
-data @user.home/caveData -user @user.home/caveData -clean
-consoleLog
-Xincgc -Dosgi.instance.area.readOnly=true
--Dosgi.hook.configurators.exclude=org.eclipse.core.runtime.internal.adaptor.EclipseLogHook,org.eclipse.core.runtime.internal.adaptor.EclipseErrorHandler
--XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass -Dorg.eclipse.update.reconcile=false -XX:MaxPermSize=128m -Dorg.eclipse.ui/KEY_CONFIGURATION_ID=com.raytheon.viz.ui.awips.scheme -Dawips.mode=pypies -Dqpid.dest_syntax=BURL -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -XX:OnOutOfMemoryError="capture -t no -p $pid &" -Dlog4j.configuration=log4j-viz-core.xml
+-Declipse.log.enabled=false
+-XX:+UnlockDiagnosticVMOptions
+-XX:+UnsyncloadClass
+-Dorg.eclipse.update.reconcile=false
+-XX:MaxPermSize=128m
+-Dorg.eclipse.ui/KEY_CONFIGURATION_ID=com.raytheon.viz.ui.awips.scheme
+-Dqpid.dest_syntax=BURL
+-Dcom.sun.management.jmxremote
+-Dcom.sun.management.jmxremote.authenticate=false
+-Dcom.sun.management.jmxremote.ssl=false
+-XX:OnOutOfMemoryError="capture -t no -p $pid &"
+-Dlog4j.configuration=log4j-viz-core.xml
-Xmx1280M
-Dfile.encoding=UTF-8 -Xmx768M
diff --git a/cave/com.raytheon.viz.product.awips/developer.product b/cave/com.raytheon.viz.product.awips/developer.product
index 5af9bf8c5d..ff80a15d6c 100644
--- a/cave/com.raytheon.viz.product.awips/developer.product
+++ b/cave/com.raytheon.viz.product.awips/developer.product
@@ -15,12 +15,12 @@
-data @user.home/caveData -user @user.home/caveData -clean -consoleLog -alertviz
- -Xincgc -Xmx1024M -Dosgi.instance.area.readOnly=true
--Dosgi.hook.configurators.exclude=org.eclipse.core.runtime.internal.adaptor.EclipseLogHook,org.eclipse.core.runtime.internal.adaptor.EclipseErrorHandler
+ -Xincgc -Xmx1024M -Dosgi.instance.area.readOnly=true
+-Declipse.log.enabled=false
-XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass
-Dorg.eclipse.update.reconcile=false -XX:MaxPermSize=128m
-Dorg.eclipse.ui/KEY_CONFIGURATION_ID=com.raytheon.viz.ui.awips.scheme
--Dawips.mode=pypies -Dqpid.dest_syntax=BURL
+-Dqpid.dest_syntax=BURL
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
diff --git a/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/dao/SessionManagedDao.java b/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/dao/SessionManagedDao.java
index 73a43db7c3..9b0b79a025 100644
--- a/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/dao/SessionManagedDao.java
+++ b/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/dao/SessionManagedDao.java
@@ -58,6 +58,7 @@ import com.raytheon.uf.edex.database.DataAccessLayerException;
* 3/18/2013 1802 bphillip Added additional database functions. Enforcing mandatory transaction propogation
* 3/27/2013 1802 bphillip Changed transaction propagation of query methods
* 4/9/2013 1802 bphillip Modified how arguments are passed in to query methods
+ * May 1st, 2013 1967 njensen Fixed autoboxing for Eclipse 3.8
*
*
*
@@ -195,7 +196,7 @@ public abstract class SessionManagedDao query(String queryString, int maxResults,
+ public List query(String queryString, Integer maxResults,
Object... params) {
return executeHQLQuery(queryString, maxResults, params);
@@ -264,7 +265,7 @@ public abstract class SessionManagedDao List executeHQLQuery(final String queryString,
- int maxResults, Object... params) {
+ Integer maxResults, Object... params) {
if (params.length % 2 != 0) {
throw new IllegalArgumentException(
"Wrong number of arguments submitted to executeHQLQuery.");