use of org.vcell.util.document.VCDocumentInfo in project vcell by virtualcell.
the class ClientDocumentManager method curate.
/**
* Insert the method's description here.
* Creation date: (5/23/2006 9:23:34 AM)
*/
public void curate(CurateSpec curateSpec) throws DataAccessException {
try {
VCDocumentInfo newVCDocumentInfo = getSessionManager().getUserMetaDbServer().curate(curateSpec);
xmlHash.remove(curateSpec.getVCDocumentInfo().getVersion().getVersionKey());
if (curateSpec.getVCDocumentInfo() instanceof MathModelInfo) {
mathModelInfoHash.remove(curateSpec.getVCDocumentInfo().getVersion().getVersionKey());
mathModelInfoHash.put(newVCDocumentInfo.getVersion().getVersionKey(), (MathModelInfo) newVCDocumentInfo);
} else if (curateSpec.getVCDocumentInfo() instanceof BioModelInfo) {
bioModelInfoHash.remove(curateSpec.getVCDocumentInfo().getVersion().getVersionKey());
bioModelInfoHash.put(newVCDocumentInfo.getVersion().getVersionKey(), (BioModelInfo) newVCDocumentInfo);
}
fireDatabaseUpdate(new DatabaseEvent(this, DatabaseEvent.UPDATE, curateSpec.getVCDocumentInfo(), newVCDocumentInfo));
} catch (Exception e) {
e.printStackTrace();
throw new DataAccessException(e.getClass().getName() + " " + e.getMessage());
}
}
use of org.vcell.util.document.VCDocumentInfo in project vcell by virtualcell.
the class NewName method run.
/**
* Insert the method's description here.
* Creation date: (5/31/2004 6:04:14 PM)
* @param hashTable java.util.Hashtable
* @param clientWorker cbit.vcell.desktop.controls.ClientWorker
*/
public void run(Hashtable<String, Object> hashTable) throws java.lang.Exception {
DocumentWindowManager documentWindowManager = (DocumentWindowManager) hashTable.get(CommonTask.DOCUMENT_WINDOW_MANAGER.name);
VCDocument document = documentWindowManager.getVCDocument();
if (document.getDocumentType() == VCDocumentType.MATHMODEL_DOC) {
if (((MathModelWindowManager) documentWindowManager).hasUnappliedChanges()) {
String msg = "Changes have been made in VCML Editor, please click \"Apply Changes\" or \"Cancel\" to proceed.";
PopupGenerator.showErrorDialog(documentWindowManager, msg);
throw UserCancelException.CANCEL_UNAPPLIED_CHANGES;
}
}
MDIManager mdiManager = (MDIManager) hashTable.get("mdiManager");
String oldName = document.getName();
User user = mdiManager.getFocusedWindowManager().getRequestManager().getDocumentManager().getUser();
DocumentManager documentManager = mdiManager.getFocusedWindowManager().getRequestManager().getDocumentManager();
VCDocumentInfo[] vcDocumentInfos = new VCDocumentInfo[0];
String documentTypeDescription = "unknown";
if (document.getDocumentType() == VCDocumentType.MATHMODEL_DOC) {
documentTypeDescription = "MathModel";
vcDocumentInfos = documentManager.getMathModelInfos();
} else if (document.getDocumentType() == VCDocumentType.BIOMODEL_DOC) {
documentTypeDescription = "BioModel";
vcDocumentInfos = documentManager.getBioModelInfos();
} else if (document.getDocumentType() == VCDocumentType.GEOMETRY_DOC) {
documentTypeDescription = "Geometry";
vcDocumentInfos = documentManager.getGeometryInfos();
}
String newDocumentName = (oldName == null ? "New" + documentTypeDescription : oldName);
while (true) {
newDocumentName = mdiManager.getDatabaseWindowManager().showSaveDialog(document.getDocumentType(), (Component) hashTable.get("currentDocumentWindow"), newDocumentName);
if (newDocumentName == null || newDocumentName.trim().length() == 0) {
newDocumentName = null;
DialogUtils.showWarningDialog((Component) hashTable.get("currentDocumentWindow"), "New " + documentTypeDescription + " name cannot be empty.");
continue;
}
// Check name conflict
boolean bNameConflict = false;
for (int i = 0; i < vcDocumentInfos.length; i++) {
if (vcDocumentInfos[i].getVersion().getOwner().compareEqual(user)) {
if (vcDocumentInfos[i].getVersion().getName().equals(newDocumentName)) {
bNameConflict = true;
break;
}
}
}
if (bNameConflict) {
DialogUtils.showWarningDialog((Component) hashTable.get("currentDocumentWindow"), "A " + documentTypeDescription + " with name '" + newDocumentName + "' already exists. Choose a different name.");
continue;
} else {
break;
}
}
hashTable.put("newName", newDocumentName);
}
use of org.vcell.util.document.VCDocumentInfo 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);
}
}
use of org.vcell.util.document.VCDocumentInfo in project vcell by virtualcell.
the class VCDocumentDbTreeModel method initOwners.
protected static synchronized TreeMap<String, BioModelNode> initOwners(VCDocumentInfo[] vcDocumentInfos, User loginUser, VCDocumentDbTreeModel subTreeParent, Method subTreeMethod) {
//
// get list of users (owners)
//
Vector<User> userList = new Vector<User>();
userList.addElement(loginUser);
for (int i = 0; i < vcDocumentInfos.length; i++) {
VCDocumentInfo vcDocumentInfo = vcDocumentInfos[i];
if (!userList.contains(vcDocumentInfo.getVersion().getOwner())) {
userList.addElement(vcDocumentInfo.getVersion().getOwner());
}
}
//
// for each user
//
TreeMap<String, BioModelNode> treeMap = new TreeMap<String, BioModelNode>(new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
});
for (int ownerIndex = 0; ownerIndex < userList.size(); ownerIndex++) {
User owner = (User) userList.elementAt(ownerIndex);
BioModelNode ownerNode = null;
try {
if (vcDocumentInfos instanceof BioModelInfo[]) {
ownerNode = (BioModelNode) subTreeMethod.invoke(subTreeParent, new Object[] { owner, (BioModelInfo[]) vcDocumentInfos });
} else if (vcDocumentInfos instanceof MathModelInfo[]) {
ownerNode = (BioModelNode) subTreeMethod.invoke(subTreeParent, new Object[] { owner, (MathModelInfo[]) vcDocumentInfos });
} else if (vcDocumentInfos instanceof GeometryInfo[]) {
ownerNode = (BioModelNode) subTreeMethod.invoke(subTreeParent, new Object[] { owner, (GeometryInfo[]) vcDocumentInfos });
} else {
throw new Exception("Unimplemented VCDocumentInfo type=" + vcDocumentInfos.getClass().getName());
}
} catch (Exception e) {
ownerNode = new BioModelNode("Error" + e.getMessage());
}
if (owner.equals(loginUser) || ownerNode.getChildCount() > 0) {
treeMap.put(owner.getName(), ownerNode);
}
}
return treeMap;
}
use of org.vcell.util.document.VCDocumentInfo in project vcell by virtualcell.
the class DatabaseWindowPanel method currentDocumentInfo.
/**
* Comment
*/
private void currentDocumentInfo() {
VCDocumentInfo selectedDocInfo = null;
switch(getJTabbedPane1().getSelectedIndex()) {
case 0:
{
// VCDocumentType.BIOMODEL_DOC
selectedDocInfo = (BioModelInfo) getBioModelDbTreePanel1().getSelectedVersionInfo();
break;
}
case 1:
{
// VCDocumentType.MATHMODEL_DOC
selectedDocInfo = (MathModelInfo) getMathModelDbTreePanel1().getSelectedVersionInfo();
break;
}
case 2:
{
// VCDocumentType.GEOMETRY_DOC
selectedDocInfo = (GeometryInfo) getGeometryTreePanel1().getSelectedVersionInfo();
break;
}
}
setSelectedDocumentInfo(selectedDocInfo);
}
Aggregations