Search in sources :

Example 1 with VCellClientDataService

use of cbit.vcell.client.pyvcellproxy.VCellClientDataService in project vcell by virtualcell.

the class VCellClientTest method main.

/**
 * Starts the application.
 * @param args an array of command-line arguments
 */
public static void main(java.lang.String[] args) {
    class ParseVCellUserEvents implements Runnable {

        AWTEvent event;

        public ParseVCellUserEvents(AWTEvent event) {
            this.event = event;
        }

        @Override
        public void run() {
            if (event instanceof MouseEvent) {
                MouseEvent mouseEvent = (MouseEvent) event;
                Object details = null;
                if (mouseEvent.getID() == MouseEvent.MOUSE_RELEASED) {
                    if (mouseEvent.getComponent() instanceof JTable) {
                        JTable comp = (JTable) mouseEvent.getComponent();
                        int[] selRows = comp.getSelectedRows();
                        if (selRows != null && selRows.length > 0) {
                            StringBuffer sb = new StringBuffer();
                            for (int i = 0; i < selRows.length; i++) {
                                for (int j = 0; j < comp.getColumnCount(); j++) {
                                    try {
                                        sb.append((j == 0 ? "" : ",") + comp.getColumnName(j) + "='" + comp.getModel().getValueAt(selRows[i], j) + "'");
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
                            details = sb.toString();
                        }
                    } else if (mouseEvent.getComponent() instanceof JTree) {
                        JTree comp = (JTree) mouseEvent.getComponent();
                        TreePath treePath = comp.getSelectionPath();
                        if (treePath != null) {
                            details = treePath.getLastPathComponent();
                            // BioModel, MathModel, Geometry document tree selections
                            if (details instanceof BioModelNode) {
                                // VCellBasicCellRenderer.VCDocumentInfoNode
                                BioModelNode bioModelNode = (BioModelNode) details;
                                boolean isVCDocumentInfo = bioModelNode.getUserObject() instanceof VCDocumentInfo;
                                boolean isBioModelsNetModelInfo = bioModelNode.getUserObject() instanceof BioModelsNetModelInfo;
                                if (!isVCDocumentInfo && bioModelNode.getChildCount() > 0 && bioModelNode.getUserObject() instanceof VCellBasicCellRenderer.VCDocumentInfoNode) {
                                    TreeNode treeNode = bioModelNode.getFirstChild();
                                    if (treeNode instanceof BioModelNode && ((BioModelNode) treeNode).getUserObject() instanceof VCDocumentInfo) {
                                        details = ((BioModelNode) treeNode).getUserObject();
                                    }
                                } else if (isBioModelsNetModelInfo) {
                                    details = BioModelsNetModelInfo.class.getSimpleName() + " '" + ((BioModelsNetModelInfo) bioModelNode.getUserObject()).getName() + "'";
                                }
                            }
                        }
                    } else if (mouseEvent.getComponent() instanceof JTabbedPane) {
                        JTabbedPane comp = (JTabbedPane) mouseEvent.getComponent();
                        details = "'" + comp.getTitleAt(comp.getSelectedIndex()) + "'";
                    } else if (mouseEvent.getComponent() instanceof JMenuItem) {
                        JMenuItem comp = (JMenuItem) mouseEvent.getComponent();
                        details = "'" + comp.getText() + "'";
                    } else if (mouseEvent.getComponent() instanceof AbstractButton) {
                        AbstractButton comp = (AbstractButton) mouseEvent.getComponent();
                        Boolean bSelected = (comp instanceof JToggleButton ? ((JToggleButton) comp).isSelected() : null);
                        details = (bSelected != null ? "(" + (bSelected ? "selected" : "unselected") + ")" : "") + "'" + comp.getText() + "'";
                    } else if (mouseEvent.getComponent() instanceof JComboBox<?>) {
                        JComboBox<?> comp = (JComboBox<?>) mouseEvent.getComponent();
                        details = "'" + comp.getSelectedItem().toString() + "'";
                    } else if (mouseEvent.getComponent() instanceof JList<?>) {
                        JList<?> comp = (JList<?>) mouseEvent.getComponent();
                        details = "'" + comp.getSelectedValue() + "'";
                    } else {
                        details = "TBD " + mouseEvent.getComponent();
                    }
                    Component parentComponent = mouseEvent.getComponent();
                    StringBuffer parentInfo = new StringBuffer();
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(BeanUtils.vcDateFormat, Locale.US);
                    do {
                        String title = "";
                        if (parentComponent instanceof Dialog) {
                            title = ((Dialog) parentComponent).getTitle();
                        } else if (parentComponent instanceof Frame) {
                            title = ((Frame) parentComponent).getTitle();
                        }
                        parentInfo.append(parentComponent.getClass().getTypeName() + "(" + parentComponent.getName() + (title != null && title.length() > 0 ? ",title='" + title + "'" : "") + ")");
                        if (parentComponent instanceof DocumentWindow && ((DocumentWindow) parentComponent).getTopLevelWindowManager() instanceof DocumentWindowManager) {
                            VCDocument vcDocument = ((DocumentWindowManager) ((DocumentWindow) parentComponent).getTopLevelWindowManager()).getVCDocument();
                            if (vcDocument != null) {
                                String date = (vcDocument.getVersion() != null && vcDocument.getVersion().getDate() != null ? simpleDateFormat.format(vcDocument.getVersion().getDate()) : "nodate");
                                parentInfo.append("doc=" + vcDocument.getDocumentType() + " '" + vcDocument.getName() + "' " + date);
                            }
                        }
                        parentInfo.append(" -> ");
                    } while ((parentComponent = parentComponent.getParent()) != null);
                    // try to add event, if full remove an event from the top
                    while (!recordedUserEvents.offer(mouseEvent.getClickCount() + " " + (details == null ? "null" : details.toString()) + BeanUtils.PLAINTEXT_EMAIL_NEWLINE + parentInfo.toString())) {
                        recordedUserEvents.poll();
                    }
                }
            }
        }
    }
    ;
    AWTEventListener awtEventListener = new AWTEventListener() {

        @Override
        public void eventDispatched(final AWTEvent event) {
            if (event instanceof MouseEvent) {
                if (((MouseEvent) event).getID() == MouseEvent.MOUSE_RELEASED) {
                    new Thread(new ParseVCellUserEvents(event)).start();
                }
            }
        }
    };
    Toolkit.getDefaultToolkit().addAWTEventListener(awtEventListener, AWTEvent.MOUSE_EVENT_MASK);
    // check synchronize Proxy prefs, Proxy Properties
    Preferences prefs = Preferences.userNodeForPackage(RemoteProxyVCellConnectionFactory.class);
    Boolean bHttp = (System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) == null && System.getProperty(NetworkProxyUtils.PROXY_SOCKS_HOST) == null ? null : System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) != null);
    String currentProxyHost = (bHttp == null ? null : (bHttp ? System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) : System.getProperty(NetworkProxyUtils.PROXY_SOCKS_HOST)));
    String currentProxyPort = (bHttp == null ? null : (bHttp ? System.getProperty(NetworkProxyUtils.PROXY_HTTP_PORT) : System.getProperty(NetworkProxyUtils.PROXY_SOCKS_PORT)));
    NetworkProxyUtils.setProxyProperties(false, null, prefs.get(NetworkProxyPreferences.prefProxyType, NetworkProxyPreferences.prefProxyType), currentProxyHost, currentProxyPort, prefs.get(NetworkProxyPreferences.prefProxyType, NetworkProxyPreferences.prefProxyType), prefs.get(NetworkProxyPreferences.prefProxyHost, NetworkProxyPreferences.prefProxyHost), prefs.get(NetworkProxyPreferences.prefProxyPort, NetworkProxyPreferences.prefProxyPort));
    final boolean IS_DEBUG = ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
    if (!IS_DEBUG) {
        String siteName = VCellSoftwareVersion.fromSystemProperty().getSite().name().toLowerCase();
        ConsoleCapture.getInstance().captureStandardOutAndError(new File(ResourceUtil.getLogDir(), "vcellrun_" + siteName + ".log"));
    }
    Logging.init();
    ErrorUtils.setDebug(IS_DEBUG);
    if (args != null && args.length >= 1 && args[0].equals("-console")) {
        // remove install4j parameter
        List<String> newArgs = new ArrayList<String>();
        newArgs.addAll(Arrays.asList(args));
        newArgs.remove(0);
        args = newArgs.toArray(new String[0]);
    }
    StringBuffer stringBuffer = new StringBuffer();
    for (int i = 0; i < args.length; i++) {
        stringBuffer.append("arg" + i + "=\"" + args[i] + "\" ");
    }
    System.out.println("starting with arguments [" + stringBuffer + "]");
    System.out.println("Running under Java major version: ONE point " + ResourceUtil.getJavaVersion().toString() + ".  Specifically: Java " + (System.getProperty("java.version")) + ", published by " + (System.getProperty("java.vendor")) + ", on the " + (System.getProperty("os.arch")) + " architecture running version " + (System.getProperty("os.version")) + " of the " + (System.getProperty("os.name")) + " operating system");
    ClientServerInfo csInfo = null;
    String hoststr = System.getProperty(PropertyLoader.vcellServerHost);
    String[] hosts = null;
    if (hoststr != null) {
        StringTokenizer st = new StringTokenizer(hoststr, " ,;");
        if (st.countTokens() >= 1) {
            hosts = new String[st.countTokens()];
            int count = 0;
            while (st.hasMoreTokens()) {
                hosts[count++] = st.nextToken();
            }
        }
    }
    if (hosts == null) {
        hosts = new String[1];
    }
    String user = null;
    String password = null;
    VCDocument initialDocument = null;
    if (args.length == 3) {
        hosts[0] = args[0];
        user = args[1];
        password = args[2];
    } else if (args.length == 0) {
    // this is ok
    } else if (args.length == 1) {
        // Check if arg is drag-n-drop file or a 'hostname'
        try {
            // drag and drop file on install4j VCell launcher will pass filepath as single arg to VCell
            File openThisVCellFile = new File(args[0]);
            if (openThisVCellFile.exists() && openThisVCellFile.isFile()) {
                initialDocument = startupWithOpen(args[0]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        // continue to hostname check
        }
        // If startup file not exist assume arg is a hostname
        if (initialDocument == null) {
            hosts[0] = args[0];
        }
    // If install4j drag-n-drop, hosts[0] stays null and host is assumed to be loaded from a client property
    } else if (args.length == 2 && args[0].equals("-open")) {
        // hosts[0] = "-local";
        initialDocument = startupWithOpen(args[1]);
    } else {
        System.out.println("usage: VCellClientTest ( ((-local|host[:port]) [userid password]) | ([-open] filename) )");
        System.exit(1);
    }
    if (hosts[0] != null && hosts[0].equalsIgnoreCase("-local")) {
        csInfo = ClientServerInfo.createLocalServerInfo(user, (password == null || password.length() == 0 ? null : new UserLoginInfo.DigestedPassword(password)));
    } else {
        String[] hostParts = hosts[0].split(":");
        String apihost = hostParts[0];
        int apiport = Integer.parseInt(hostParts[1]);
        csInfo = ClientServerInfo.createRemoteServerInfo(apihost, apiport, user, (password == null || password.length() == 0 ? null : new UserLoginInfo.DigestedPassword(password)));
    }
    try {
        String propertyFile = PropertyLoader.getProperty(PropertyLoader.propertyFileProperty, "");
        if (propertyFile.length() > 0) {
            PropertyLoader.loadProperties(ArrayUtils.addAll(REQUIRED_CLIENT_PROPERTIES, REQUIRED_LOCAL_PROPERTIES));
            try {
                VCMongoMessage.enabled = true;
                VCMongoMessage.serviceStartup(ServiceName.client, null, null);
                PropertyLoader.sendErrorsToMongo();
            } catch (Exception e) {
                System.out.println("failed to start Mongo logging");
            }
        } else {
            PropertyLoader.loadProperties(REQUIRED_CLIENT_PROPERTIES);
            VCMongoMessage.enabled = false;
        }
        // call in main thread, since it's quick and not necessarily thread safe
        ResourceUtil.setNativeLibraryDirectory();
        vcellClient = VCellClient.startClient(initialDocument, csInfo);
        VCellClientDataService vcellClientDataService = new VCellClientDataServiceImpl(vcellClient);
        VCellProxyServer.startVCellVisitDataServerThread(vcellClientDataService);
        // starting loading libraries
        new LibraryLoaderThread(true).start();
        try {
            PythonSupport.verifyInstallation(PythonPackage.values());
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }
    // SimulationService.Iface simService = new SimulationServiceImpl();
    // VCellIJServer.startVCellVisitDataServerThread(simService, false);
    } catch (Throwable exception) {
        ErrorUtils.sendRemoteLogMessage(csInfo.getUserLoginInfo(), csInfo.toString() + "\nvcell startup failed\n\n" + exception.getMessage());
        JOptionPane.showMessageDialog(null, exception.getMessage(), "Fatal Error", JOptionPane.OK_OPTION);
        System.err.println("Exception occurred in main() of VCellApplication");
        exception.printStackTrace(System.out);
    }
}
Also used : VCellClientDataService(cbit.vcell.client.pyvcellproxy.VCellClientDataService) BioModelsNetModelInfo(cbit.vcell.client.desktop.biomodel.BioModelsNetModelInfo) ArrayList(java.util.ArrayList) ClientServerInfo(cbit.vcell.client.server.ClientServerInfo) JToggleButton(javax.swing.JToggleButton) DocumentWindowManager(cbit.vcell.client.DocumentWindowManager) TreeNode(javax.swing.tree.TreeNode) Dialog(java.awt.Dialog) AWTEvent(java.awt.AWTEvent) AbstractButton(javax.swing.AbstractButton) VCDocument(org.vcell.util.document.VCDocument) DocumentWindow(cbit.vcell.client.desktop.DocumentWindow) JTree(javax.swing.JTree) JTable(javax.swing.JTable) File(java.io.File) JList(javax.swing.JList) Frame(java.awt.Frame) AWTEventListener(java.awt.event.AWTEventListener) JTabbedPane(javax.swing.JTabbedPane) BioModelNode(cbit.vcell.desktop.BioModelNode) VCellClientDataServiceImpl(cbit.vcell.client.data.VCellClientDataServiceImpl) JMenuItem(javax.swing.JMenuItem) Component(java.awt.Component) NetworkProxyPreferences(cbit.vcell.client.desktop.NetworkProxyPreferences) Preferences(java.util.prefs.Preferences) MouseEvent(java.awt.event.MouseEvent) JComboBox(javax.swing.JComboBox) LibraryLoaderThread(cbit.vcell.resource.LibraryLoaderThread) LibraryLoaderThread(cbit.vcell.resource.LibraryLoaderThread) StringTokenizer(java.util.StringTokenizer) TreePath(javax.swing.tree.TreePath) VCDocumentInfo(org.vcell.util.document.VCDocumentInfo) SimpleDateFormat(java.text.SimpleDateFormat)

Aggregations

DocumentWindowManager (cbit.vcell.client.DocumentWindowManager)1 VCellClientDataServiceImpl (cbit.vcell.client.data.VCellClientDataServiceImpl)1 DocumentWindow (cbit.vcell.client.desktop.DocumentWindow)1 NetworkProxyPreferences (cbit.vcell.client.desktop.NetworkProxyPreferences)1 BioModelsNetModelInfo (cbit.vcell.client.desktop.biomodel.BioModelsNetModelInfo)1 VCellClientDataService (cbit.vcell.client.pyvcellproxy.VCellClientDataService)1 ClientServerInfo (cbit.vcell.client.server.ClientServerInfo)1 BioModelNode (cbit.vcell.desktop.BioModelNode)1 LibraryLoaderThread (cbit.vcell.resource.LibraryLoaderThread)1 AWTEvent (java.awt.AWTEvent)1 Component (java.awt.Component)1 Dialog (java.awt.Dialog)1 Frame (java.awt.Frame)1 AWTEventListener (java.awt.event.AWTEventListener)1 MouseEvent (java.awt.event.MouseEvent)1 File (java.io.File)1 SimpleDateFormat (java.text.SimpleDateFormat)1 ArrayList (java.util.ArrayList)1 StringTokenizer (java.util.StringTokenizer)1 Preferences (java.util.prefs.Preferences)1