[cig-commits] r8019 - in
cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal:
portlets util
wei at geodynamics.org
wei at geodynamics.org
Mon Sep 24 18:13:19 PDT 2007
Author: wei
Date: 2007-09-24 18:13:18 -0700 (Mon, 24 Sep 2007)
New Revision: 8019
Added:
cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/CreateMagjobPortlet.java
cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/TextEditorPortlet.java
cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/TgResourcesPortlet.java
Modified:
cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/CigMagPortlet.java
cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/util/SimpleGridConstants.java
Log:
Add seperate page for creating mag job; a text editor page and a query for grid resources.
Modified: cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/CigMagPortlet.java
===================================================================
--- cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/CigMagPortlet.java 2007-09-24 22:58:28 UTC (rev 8018)
+++ cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/CigMagPortlet.java 2007-09-25 01:13:18 UTC (rev 8019)
@@ -218,7 +218,7 @@
mysession.setAttribute(SimpleGridConstants.MagJobList + uid, joblist, PortletSession.APPLICATION_SCOPE);
mysession.setAttribute(SimpleGridConstants.MagJobSid + uid, jid, PortletSession.APPLICATION_SCOPE);
mysession.setAttribute(SimpleGridConstants.MagPage + uid, "Main", PortletSession.APPLICATION_SCOPE);
- mysession.setAttribute("cig_mag_status_info" + uid, job.getDataset() + "(jobId="+job.getId()+"): Job is created. Clieck \"Next\" to transfer dataset to remote site", PortletSession.APPLICATION_SCOPE);
+ mysession.setAttribute("cig_mag_status_info" + uid, job.getDataset() + "(jobId="+job.getId()+"): Job is created. Clieck \"Run\" to transfer dataset to remote site and start Run", PortletSession.APPLICATION_SCOPE);
}catch (Exception e) {
error += "CigPortalMagAction::doMag_create: error\n"+e.toString()+"\nBe sure to select required parameters\n";
}
@@ -340,6 +340,56 @@
}
this.fillTemplate(aContext, req, res, error);
}
+ public void doMag_Refresh ( ActionRequest req, ActionResponse res, Context aContext ) throws PortletException {
+ //clear error info
+ String error = "";
+ MagjobBean job = null;
+ try {
+ PortletSession mysession = req.getPortletSession(true);
+ User user = (User) req.getAttribute(SportletProperties.PORTLET_USER);
+ String uid = user.getUserID();
+ // get job id
+ String selectedjobid = req.getParameter("cig_mag_id");
+ if (selectedjobid != null) {
+ // find the job
+ ArrayList joblist = (ArrayList)mysession.getAttribute(SimpleGridConstants.MagJobList + uid, PortletSession.APPLICATION_SCOPE);
+
+ int i;
+ for (i=0; i<joblist.size(); i++) {
+ job = (MagjobBean)joblist.get(i);
+ if (job.getId().equals(selectedjobid)) {
+ // this job exists, check if result is there
+ break;
+ }
+ }
+ if (i < joblist.size()) {
+ mysession.setAttribute(SimpleGridConstants.MagJobSid + uid, job.getId(), PortletSession.APPLICATION_SCOPE);
+ String opstatus = "";
+ String sprefix = job.getDataset() + "(jobId="+job.getId()+"): ";
+ if (job.getStatus().equals("cigportal:New")) {
+ goTransferDataset(mysession, uid, joblist, job);
+ } else if (job.getStatus().equals("cigportal:Dataset Transferred")) {
+ goSubmit(mysession, uid, joblist, job);
+ } else if (job.getStatus().equals("cigportal:Job Submitted")) {
+ goRefresh(mysession, uid, joblist, job);
+ } else if (job.getStatus().equals("cigportal:Job Done")) {
+ goTransferResult(mysession, uid, joblist, job);
+ } else if (job.getStatus().equals("cigportal:Result Transferred")) {
+ goViz(mysession, uid, joblist, job);
+ } else if (job.getStatus().equals("cigportal:Image Created")) {
+ goShowViz(mysession, uid, joblist, job);
+ }
+ mysession.setAttribute("cig_mag_status_info" + uid, sprefix+opstatus, PortletSession.APPLICATION_SCOPE);
+ //else throw new PortletException("Unknown job status for job " + selectedjobid + ": " +job.getStatus());
+ } else throw new PortletException("Couldn't find this job: " + selectedjobid);
+ }
+ }catch (Exception e) {
+ error += "CigPortalMagAction::doMag_submit: error\n"+e.toString() + "\n";
+ if (job != null) job.setStatus("Error");
+ //req.getPortletSession().setAttribute("cig_mag_status_info", e.toString(), PortletSession.APPLICATION_SCOPE);
+ }
+ this.fillTemplate(aContext, req, res, error);
+ }
public void doMag_submit ( ActionRequest req, ActionResponse res, Context aContext ) throws PortletException {
//clear error info
String error = "";
@@ -367,17 +417,17 @@
String opstatus = "";
String sprefix = job.getDataset() + "(jobId="+job.getId()+"): ";
if (job.getStatus().equals("cigportal:New")) {
- opstatus = this.goTransferDataset(mysession, uid, joblist, job);
+ goTransferDataset(mysession, uid, joblist, job);
} else if (job.getStatus().equals("cigportal:Dataset Transferred")) {
- opstatus = goSubmit(mysession, uid, joblist, job);
+ goSubmit(mysession, uid, joblist, job);
} else if (job.getStatus().equals("cigportal:Job Submitted")) {
- opstatus = goRefresh(mysession, uid, joblist, job);
+ goRefresh(mysession, uid, joblist, job);
} else if (job.getStatus().equals("cigportal:Job Done")) {
- opstatus = goTransferResult(mysession, uid, joblist, job);
+ goTransferResult(mysession, uid, joblist, job);
} else if (job.getStatus().equals("cigportal:Result Transferred")) {
- opstatus = goViz(mysession, uid, joblist, job);
+ goViz(mysession, uid, joblist, job);
} else if (job.getStatus().equals("cigportal:Image Created")) {
- opstatus = goShowViz(mysession, uid, joblist, job);
+ goShowViz(mysession, uid, joblist, job);
}
mysession.setAttribute("cig_mag_status_info" + uid, sprefix+opstatus, PortletSession.APPLICATION_SCOPE);
//else throw new PortletException("Unknown job status for job " + selectedjobid + ": " +job.getStatus());
@@ -418,7 +468,7 @@
mysession.setAttribute("cig_mag_ft_thread" + uid, mytransfer, PortletSession.APPLICATION_SCOPE);
//job.setStatus("cigportal:Dataset Transferring");
mysession.setAttribute(SimpleGridConstants.MagJobList + uid, joblist, PortletSession.APPLICATION_SCOPE);
- return "Dataset is being transferred to remote site. Click \"Next\" to refresh the transfer status";
+ return "Dataset is being transferred to remote site. Click \"Next\" to refresh the transfer status";
} else {
String curid = mytransfer.getOwnerId();
if (!curid.equals(job.getId())) {
@@ -559,7 +609,7 @@
mysession.removeAttribute("cig_mag_ft_thread" + uid, PortletSession.APPLICATION_SCOPE);
throw new PortletException("Error in dataset transfer for job " + job.getId()+": "+mystatus);
}
- return "results are being transferred from remote site. Click \"Next\" to refresh the transfer status";
+ return "results are being transferred from remote site. Click on the tar file to download the data";
}
} else throw new PortletException("Could not find selected site from site list for job "+job.getId());
Added: cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/CreateMagjobPortlet.java
===================================================================
--- cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/CreateMagjobPortlet.java 2007-09-24 22:58:28 UTC (rev 8018)
+++ cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/CreateMagjobPortlet.java 2007-09-25 01:13:18 UTC (rev 8019)
@@ -0,0 +1,421 @@
+/**
+ * Copyright (c) 2007 Computational Infrastructure for Geodynamics (CIG),
+ * California Institute of Technology, All Rights Reserved.
+ */
+
+package org.cig.portal.portlets;
+
+//JSR-168
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.*;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+import javax.portlet.PortletSession;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.velocity.context.Context;
+import org.cig.portal.beans.MagjobBean;
+import org.cig.portal.grid.data.SimpleTransferThread;
+import org.cig.portal.grid.job.SimpleRSL;
+import org.cig.portal.grid.job.SimpleRunGT2;
+import org.cig.portal.grid.job.SimpleRunGT4;
+import org.cig.portal.grid.security.SimpleCred;
+import org.cig.portal.util.Config;
+import org.cig.portal.util.MAGPortletConfig;
+import org.cig.portal.util.SimpleGridConstants;
+import org.gisolve.demo.app.IDWVizThread;
+import org.gridsphere.portlet.impl.SportletProperties;
+import org.gridsphere.services.core.user.User;
+import org.ietf.jgss.GSSCredential;
+import org.ogce.portlets.VelocityPortlet;
+
+//apache commons FileUpload
+import org.apache.commons.fileupload.portlet.*;
+import org.apache.commons.fileupload.*;
+import org.apache.commons.fileupload.disk.*;
+
+public class CreateMagjobPortlet extends VelocityPortlet {
+ /* This method is called whenever porlet is loaded */
+ public void buildViewContext( RenderRequest req, RenderResponse res, Context aContext ) {
+ try {
+ this.fillTemplate(aContext, req, res, "");
+ // debug
+ this.getPortletContext().log("CigPortal: magAction::buildViewContext() called");
+ } catch (Exception e) {
+ this.getPortletContext().log("CigPortal: magAction::buildViewContext()\n" + e.toString());
+ }
+ }
+ /* This method is called when user click "customizer" action */
+ public void buildEditContext( RenderRequest req, RenderResponse res, Context aContext ) {
+ buildViewContext(req, res, aContext);
+ }
+ /* This method is called when user click "help" action */
+ public void buildHelpContext( RenderRequest req, RenderResponse res, Context aContext ) {
+ buildViewContext(req, res, aContext);
+ }
+ public void fillTemplate(Context aContext, PortletRequest req, PortletResponse res, String actionError) {
+ PortletSession mysession = req.getPortletSession(true);
+ User user = (User) req.getAttribute(SportletProperties.PORTLET_USER);
+ String uid = user.getUserID();
+ String error = "";
+ try {
+ // get config info about grid security
+ Config myconfig = (Config)mysession.getAttribute(SimpleGridConstants.SESSION_ATTR_CONFIG + uid, PortletSession.APPLICATION_SCOPE);
+ String mywebappname = myconfig.get("portal.webappname");
+ if (!isValidWebapp(mywebappname))
+ throw new PortletException("CreateMagjobPortlet.fillTemplate(): "+mywebappname+" is not a valid name. Check your config file first.");
+ //TODO: object persistence
+ ArrayList joblist = (ArrayList)mysession.getAttribute(SimpleGridConstants.MagJobList + uid, PortletSession.APPLICATION_SCOPE);
+ // workflow
+ String cursid = (String)mysession.getAttribute(SimpleGridConstants.MagJobSid + uid, PortletSession.APPLICATION_SCOPE);
+ String curPage = (String)mysession.getAttribute(SimpleGridConstants.MagPage + uid, PortletSession.APPLICATION_SCOPE);
+ if (curPage.equals("Upload")) {
+ MagjobBean item = null;
+ int i;
+ int numviz = 0, numReady = 0;
+ for (i=0; i<joblist.size(); i++) {
+ item = (MagjobBean)joblist.get(i);
+ if (item.getId().equals(cursid)) {
+ numviz = item.getKnum();
+ for (int v=0; v<numviz; v++) {
+ // this job exists, check if result is there
+ String rfile = this.getPortletContext().getRealPath("storage/"+uid+"/mag/images/" + cursid+"."+item.getK(v) + ".jpg");
+ File rF = new File(rfile);
+ if (rF.isFile())
+ numReady++;
+ }
+ if (numReady < numviz) {
+ error += "Visualization file not ready yet. Please wait for a while or click \"Next\" to refresh status\n";
+ }
+ break;
+ }
+ }
+ if (i<joblist.size() && numviz>0 && numReady==numviz) {
+ // set links
+ ArrayList<String> resultlink = new ArrayList<String>(numviz);
+ ArrayList<String> imagelink = new ArrayList<String>(numviz);
+ ArrayList<String> vizklist = new ArrayList<String>(numviz);
+ for (int v=0; v<numviz; v++) {
+ resultlink.add("/"+mywebappname+"/storage/"+uid+"/mag/results/" + cursid+"."+item.getK(v) + ".dat");
+ imagelink.add("/"+mywebappname+"/storage/"+uid+"/mag/images/" + cursid+"."+item.getK(v) + ".jpg");
+ vizklist.add(Integer.toString(item.getK(v)));
+ }
+ String rfile = this.getPortletContext().getRealPath("storage/"+uid+"/mag/results/" + cursid+"."+item.getK(0) + ".dat");
+ String str_zrange = this.getZRange(rfile);
+ String[] minmax = str_zrange.split(",");
+ int zmax=0, zmin=0;
+ if (minmax.length == 2) {
+ zmin=Integer.parseInt(minmax[0]);
+ zmax=Integer.parseInt(minmax[1]);
+ }
+ String legendlink = "/"+mywebappname+"/images/vizlegend.jpg";
+ aContext.put("cig_mag_viz_zmax", zmax);
+ aContext.put("cig_mag_viz_zmin", zmin);
+ aContext.put("cig_mag_viz_legendlink", legendlink);
+ aContext.put("cig_mag_viz_resultlink", resultlink);
+ aContext.put("cig_mag_viz_imagelink", imagelink);
+ aContext.put("cig_mag_viz_klist", vizklist);
+ aContext.put("cig_mag_viz_dataset", item.getDataset());
+ aContext.put("cig_mag_viz_jobid", item.getId());
+
+ aContext.put(SimpleGridConstants.errorInfo, actionError + error);
+ setTemplate(req, "upload.vm");
+ return;
+ }
+ }
+ aContext.put(SimpleGridConstants.MagJobList, joblist);
+ aContext.put(SimpleGridConstants.MagJobSid, cursid);
+ String statusinfo = (String)mysession.getAttribute("cig_mag_status_info" + uid, PortletSession.APPLICATION_SCOPE);
+ aContext.put("cig_mag_status_info", statusinfo);
+ ArrayList sites = this.getSiteList(myconfig);
+ aContext.put("cig_mag_site_list", sites);
+ String udir = this.getPortletContext().getRealPath("storage/"+uid+"/mag/datasets");
+ File userMagDir = new File(udir);
+ if (!userMagDir.isDirectory()) throw new PortletException(udir+": Mag portlet: user Mag dataset dir is not a directory.");
+ String[] flist = userMagDir.list();
+ ArrayList<String> filelist = new ArrayList<String>(flist.length);
+ for (int i=0; i<flist.length; i++) {
+ filelist.add(flist[i]);
+ }
+ aContext.put("cig_mag_parm_datalist", filelist);
+ // render dataset view
+ String viewdataset = (String)mysession.getAttribute("cig_mag_viz_vieworig" + uid, PortletSession.APPLICATION_SCOPE);
+ if (viewdataset != null) {
+ aContext.put("cig_mag_viz_vieworig", viewdataset);
+ aContext.put("cig_mag_viz_datasetlink", "/"+mywebappname+"/storage/"+uid+"/mag/datasets/"+viewdataset);
+ aContext.put("cig_mag_viz_datasetimagelink", "/"+mywebappname+"/storage/"+uid+"/mag/images/"+viewdataset+".jpg");
+ mysession.setAttribute("cig_mag_viz_vieworig" + uid, null, PortletSession.APPLICATION_SCOPE); // reset
+ } else {
+ aContext.put("cig_mag_viz_vieworig", null);
+ }
+ setTemplate(req, "createjob.vm");
+ } catch (Exception e) {
+ error += "User portlet::fillTemplate() error\n"+e.toString()+"\n";
+ setTemplate(req, "createjob.vm");
+ }
+ // fille error info
+ aContext.put(SimpleGridConstants.errorInfo, actionError + error);
+ }
+ private boolean isValidWebapp(String mywebappname) {
+ if (mywebappname == null)
+ return false;
+ return this.getPortletContext().getRealPath("thisshouldnotexist").indexOf(mywebappname+"/thisshouldnotexist") >= 0;
+ }
+ private ArrayList getSiteList(Config myconfig) {
+ String str_sites = myconfig.get("grid.sites");
+ String[] sitelist = null;
+ if (str_sites != null) {
+ sitelist = str_sites.split("\\s*,\\s*");
+ ArrayList<String> sitearray = new ArrayList<String>(sitelist.length);
+ for (int i=0; i<sitelist.length; i++)
+ sitearray.add(sitelist[i]);
+ return sitearray;
+ }
+ return null;
+ }
+ public void doMag_create( ActionRequest req, ActionResponse res, Context aContext ) throws Exception
+ {
+ //clear error info
+ String error = "";
+ try {
+ PortletSession mysession = req.getPortletSession(true);
+ User user = (User) req.getAttribute(SportletProperties.PORTLET_USER);
+ String uid = user.getUserID();
+ String str_klist = req.getParameter("cig_mag_parm_k");
+ if (str_klist == null || str_klist.equals(""))
+ throw new Exception("Please specify K-value");
+ String[] klist = str_klist.split("\\s*,\\s*");
+ int[] int_klist = new int[klist.length];
+ long timestamp = Calendar.getInstance().getTimeInMillis();
+ if (klist.length>11 || klist.length<=0)
+ throw new Exception ("Too many K values or K-value is not set");
+ else {
+ for (int i=0; i<klist.length; i++)
+ int_klist[i] = Integer.parseInt(klist[i]);
+ }
+ // create a Mag job
+ ArrayList joblist = (ArrayList)mysession.getAttribute(SimpleGridConstants.MagJobList + uid, PortletSession.APPLICATION_SCOPE);
+ String jid = uid +".job."+ timestamp;
+ MagjobBean job = new MagjobBean(jid);
+ job.setDataset(req.getParameter("cig_mag_parm_dataset"));
+ job.setN(Integer.parseInt(req.getParameter("cig_mag_parm_r")));
+ job.setM(Integer.parseInt(req.getParameter("cig_mag_parm_k")));
+ job.setKList(int_klist);
+ job.setSite(req.getParameter("cig_mag_parm_site"));
+ job.setStatus("cigportal:New");
+ job.setGtVersion(req.getParameter("cigportal_mag_parm_globus"));
+ //job.setGtVersion("GT2");
+ joblist.add(job);
+
+ mysession.setAttribute(SimpleGridConstants.MagJobList + uid, joblist, PortletSession.APPLICATION_SCOPE);
+ mysession.setAttribute(SimpleGridConstants.MagJobSid + uid, jid, PortletSession.APPLICATION_SCOPE);
+ mysession.setAttribute(SimpleGridConstants.MagPage + uid, "Main", PortletSession.APPLICATION_SCOPE);
+ mysession.setAttribute("cig_mag_status_info" + uid, job.getDataset() + "(jobId="+job.getId()+"): Job is created. Clieck \"Run\" to transfer dataset to remote site and start Run", PortletSession.APPLICATION_SCOPE);
+ }catch (Exception e) {
+ error += "CigPortalMagAction::doMag_create: error\n"+e.toString()+"\nBe sure to select required parameters\n";
+ }
+ this.fillTemplate(aContext, req, res, error);
+ }
+ public void doMag_return ( ActionRequest req, ActionResponse res, Context aContext ) throws Exception
+ {
+ //clear error info
+ String error = "";
+ try {
+ PortletSession mysession = req.getPortletSession(true);
+ User user = (User) req.getAttribute(SportletProperties.PORTLET_USER);
+ String uid = user.getUserID();
+ mysession.setAttribute(SimpleGridConstants.MagPage + uid, "Main", PortletSession.APPLICATION_SCOPE);
+ }catch (Exception e) {
+ error += "CigPortalMagAction::doMag_return: error\n"+e.toString()+"\n";
+ }
+ this.fillTemplate(aContext, req, res, error);
+ }
+
+ //added file upload handling
+// public void doMag_file_upload ( ActionRequest req, ActionResponse res, Context aContext ) throws Exception
+// {
+// // clear error info
+// String error = "";
+// try {
+// PortletSession mysession = req.getPortletSession(true);
+// User user = (User) req.getAttribute(SportletProperties.PORTLET_USER);
+// String uid = user.getUserID();
+// String uploadfile = req.getParameter("cig_mag_parm_filename");
+// if (uploadfile != null)
+// {
+// Check that we have a file upload request
+// boolean isMultipart = PortletFileUpload.isMultipartContent(req);
+// // Create a factory for disk-based file items
+// DiskFileItemFactory factory = new DiskFileItemFactory();
+// //Create a new file upload handler
+// PortletFileUpload upload = new PortletFileUpload(factory);
+// // Parse the request
+// List items = upload.parseRequest(req);
+// // Check validity of directory file(s) will be written to
+// String udir = this.getPortletContext().getRealPath("storage/"+uid+"/mag/datasets");
+// System.out.println(udir);
+// File userdmsDir = new File(udir);
+// if (!userdmsDir.isDirectory()) throw new PortletException(udir+": mag portlet: user mag dataset dir is not a directory.");
+// // Process the uploaded items
+// Iterator iter = items.iterator();
+// while (iter.hasNext())
+// {
+// FileItem item = (FileItem) iter.next();
+// if (item.isFormField()){
+// System.out.println("\nField = " + item.getFieldName());
+// }
+// else{
+// String fileName = item.getName();
+// System.out.println("\nNAME: " + fileName);
+// File uploadedFile = new File(udir, fileName);
+// item.write(uploadedFile);
+// }
+// }
+// }
+// }catch (Exception e) {
+// error += "CigPortalMagAction::doMag_file_upload: error\n"+e.toString() + "\n";
+// }
+// this.fillTemplate(aContext, req, res, error);
+// } */
+
+ public void doMag_view_dataset ( ActionRequest req, ActionResponse res, Context aContext ) throws Exception
+ {
+ //clear error info
+ String error = "";
+ try {
+ PortletSession mysession = req.getPortletSession(true);
+ User user = (User) req.getAttribute(SportletProperties.PORTLET_USER);
+ String uid = user.getUserID();
+ String viewdataset = req.getParameter("cig_mag_parm_dataset");
+ if (viewdataset.equals("")) viewdataset = null;
+ mysession.setAttribute("cig_mag_viz_vieworig" + uid, viewdataset, PortletSession.APPLICATION_SCOPE);
+ }catch (Exception e) {
+ error += "CigPortalMagAction::doMag_view_dataset: error\n"+e.toString() + "\n";
+ }
+ this.fillTemplate(aContext, req, res, error);
+ }
+ public void doMag_delete ( ActionRequest req, ActionResponse res, Context aContext ) throws PortletException {
+// clear error info
+ String error = "";
+ MagjobBean job = null;
+ try {
+ PortletSession mysession = req.getPortletSession(true);
+ User user = (User) req.getAttribute(SportletProperties.PORTLET_USER);
+ String uid = user.getUserID();
+ // get job id
+ String selectedjobid = req.getParameter("cig_mag_id");
+ if (selectedjobid != null) {
+ // find the job
+ ArrayList joblist = (ArrayList)mysession.getAttribute(SimpleGridConstants.MagJobList + uid, PortletSession.APPLICATION_SCOPE);
+
+ int i; int size = joblist.size();
+ for (i=0; i<size; i++) {
+ job = (MagjobBean)joblist.get(i);
+ if (job.getId().equals(selectedjobid)) {
+ // this job exists, just delete it
+ String nextId = "";
+ if (size>1) {
+ nextId = ((MagjobBean)joblist.get((i+1) % size)).getId();
+ }
+ mysession.setAttribute(SimpleGridConstants.MagJobSid + uid, nextId, PortletSession.APPLICATION_SCOPE);
+ // delete
+ joblist.remove(i);
+ mysession.setAttribute("cig_mag_status_info" + uid, "", PortletSession.APPLICATION_SCOPE);
+ break;
+ }
+ }
+ }
+ } catch (Exception e) {
+ error += "CigPortalMagAction::doMag_delete: error\n"+e.toString() + "\n";
+ if (job != null) job.setStatus("Error");
+ //req.getPortletSession().setAttribute("cig_mag_status_info", e.toString(), PortletSession.APPLICATION_SCOPE);
+ }
+ this.fillTemplate(aContext, req, res, error);
+ }
+ public String goViz( PortletSession mysession, String uid, ArrayList joblist, MagjobBean job ) throws Exception
+ {
+ IDWVizThread viz = (IDWVizThread)mysession.getAttribute("cig_mag_viz_thread" + uid, PortletSession.APPLICATION_SCOPE);
+ if (viz == null) {
+ int numviz = job.getKnum();
+ String s1 = this.getPortletContext().getRealPath("storage/bnd_poly.dat");
+ String s2 = this.getPortletContext().getRealPath("storage/bnd_uspolygon.dat");
+ String[] s3 = new String[numviz];
+ String[] s4 = new String[numviz];
+ String[] s5 = new String[numviz];
+ for (int i=0; i<numviz; i++) {
+ // set parameters
+ s3[i] = this.getPortletContext().getRealPath("storage/"+uid+"/mag/results/" + job.getId()+"."+job.getK(i) + ".dat");
+ s4[i] = this.getPortletContext().getRealPath("storage/"+uid+"/mag/results/" + job.getId()+"."+job.getK(i) + "_viz.dat");
+ s5[i] = this.getPortletContext().getRealPath("storage/"+uid+"/mag/images/" + job.getId()+"."+job.getK(i) + ".jpg");
+ }
+ viz = new IDWVizThread(s1, s2, s3, s4, s5, job.getId());
+ viz.start();
+ mysession.setAttribute("cig_mag_viz_thread" + uid, viz, PortletSession.APPLICATION_SCOPE);
+ return "visualization image is being created. Click \"Next\" to refresh the status of visualization";
+ } else {
+ String curid = viz.getOwnerId();
+ if (!curid.equals(job.getId())) {
+ return "Visualization thread is busy serving another your job:"+curid;
+ }
+ String mystatus = viz.getStatus();
+ if (mystatus.equals("SUCCESS")) {
+ mysession.removeAttribute("cig_mag_viz_thread" + uid, PortletSession.APPLICATION_SCOPE);
+ job.setStatus("cigportal:Image Created");
+ mysession.setAttribute(SimpleGridConstants.MagJobList + uid, joblist, PortletSession.APPLICATION_SCOPE);
+ return "visualization image has been created. Click \"Next\" to go to visualization page";
+ } else if (mystatus.startsWith("error")) {
+ mysession.removeAttribute("cig_mag_viz_thread" + uid, PortletSession.APPLICATION_SCOPE);
+ throw new PortletException("Error in visualization for job " + job.getId()+": "+mystatus);
+ }
+ return "visualization image is being created. Click \"Next\" to refresh the status of visualization";
+ }
+ }
+ public String goShowViz( PortletSession mysession, String uid, ArrayList joblist, MagjobBean job ) throws Exception
+ {
+ mysession.setAttribute(SimpleGridConstants.MagPage + uid, "Viz", PortletSession.APPLICATION_SCOPE);
+ return "";
+ }
+ private String getZRange(String inFile) throws IOException {
+ File inf = new File(inFile);
+ int zmin=0, zmax=0;
+ if (inf.isFile() && inf.canRead()) {
+ java.io.BufferedReader fr = new java.io.BufferedReader(new java.io.FileReader(inFile));
+ String aline;
+ while ((aline = fr.readLine()) != null) {
+ if (aline.startsWith("HEADER=")) {
+ String[] h_params = aline.substring(7).split("\\s+");
+ zmin = (int)(Double.parseDouble(h_params[6]));
+ zmax = (int)(Double.parseDouble(h_params[7]));
+ break;
+ }
+ }
+ fr.close();
+ return new String(zmin+","+zmax);
+ }
+ return "";
+ }
+ /**
+ * This is where we initialize in-memory storage for cigportal
+ */
+ public void doView(RenderRequest req, RenderResponse res) throws PortletException, java.io.IOException {
+ PortletSession mysession = req.getPortletSession(true);
+ User user = (User) req.getAttribute(SportletProperties.PORTLET_USER);
+ String uid = user.getUserID();
+ String storedSid = (String)mysession.getAttribute(SimpleGridConstants.SESSION_ATTR_ID + uid, PortletSession.APPLICATION_SCOPE);
+ if (storedSid == null || !storedSid.equals(mysession.getId())) {
+ storedSid = mysession.getId();
+ MAGPortletConfig.init(req, this);
+ mysession.setAttribute(SimpleGridConstants.SESSION_ATTR_ID + uid, storedSid, PortletSession.APPLICATION_SCOPE);
+ }
+ super.doView(req, res);
+ }
+}
+
Added: cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/TextEditorPortlet.java
===================================================================
--- cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/TextEditorPortlet.java 2007-09-24 22:58:28 UTC (rev 8018)
+++ cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/TextEditorPortlet.java 2007-09-25 01:13:18 UTC (rev 8019)
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2007 Computational Infrastructure for Geodynamics (CIG),
+ * California Institute of Technology, All Rights Reserved.
+ */
+
+package org.cig.portal.portlets;
+
+import org.gridsphere.provider.portlet.jsr.ActionPortlet;
+import org.gridsphere.provider.event.jsr.RenderFormEvent;
+import org.gridsphere.provider.event.jsr.ActionFormEvent;
+import org.gridsphere.provider.portletui.beans.TextEditorBean;
+
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import java.io.IOException;
+
+/**
+ * A classic helloWorld portlet with some action
+ *
+ */
+public class TextEditorPortlet extends ActionPortlet {
+
+ public void init(PortletConfig config) throws PortletException {
+ super.init(config);
+ DEFAULT_VIEW_PAGE = "texteditor/view.jsp";
+ }
+
+ public void doView(RenderFormEvent event) throws PortletException, IOException {
+ RenderRequest request = event.getRenderRequest();
+ RenderResponse response = event.getRenderResponse();
+ getPortletConfig().getPortletContext().getRequestDispatcher("/jsp/texteditor/view.jsp").include(request, response);
+ }
+
+ public void saveText(ActionFormEvent event) throws PortletException, IOException {
+ TextEditorBean myTE = event.getTextEditorBean("myTE");
+ System.err.println(myTE.getValue());
+ }
+}
Added: cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/TgResourcesPortlet.java
===================================================================
--- cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/TgResourcesPortlet.java 2007-09-24 22:58:28 UTC (rev 8018)
+++ cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/portlets/TgResourcesPortlet.java 2007-09-25 01:13:18 UTC (rev 8019)
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2007 Computational Infrastructure for Geodynamics (CIG),
+ * California Institute of Technology, All Rights Reserved.
+ */
+
+package org.cig.portal.portlets;
+
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletException;
+import javax.portlet.RenderResponse;
+import javax.portlet.RenderRequest;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+
+public class TgResourcesPortlet extends GenericPortlet {
+
+ public void doView(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException {
+ response.setContentType("text/html");
+ response.setProperty("JAVASCRIPT_SRC", "https://portal.teragrid.org/gridsphere/gridsphere?cid=systems-monitor&JavaScript=enabled");
+ getPortletContext().getRequestDispatcher("/html/tgresources.html").include(request, response);
+ }
+
+}
Modified: cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/util/SimpleGridConstants.java
===================================================================
--- cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/util/SimpleGridConstants.java 2007-09-24 22:58:28 UTC (rev 8018)
+++ cs/cigtg/trunk/cigtg-dev/CigPortal/cigportal/src/org/cig/portal/util/SimpleGridConstants.java 2007-09-25 01:13:18 UTC (rev 8019)
@@ -30,7 +30,7 @@
public static final String MagParamR = "cig_mag_parm_r";
public static final String MagParamSite = "cig_mag_parm_site";
public static final String MagParamFileUpload = "cig_mag_parm_filename"; //added for file uploading
-
+ public static final String MagParamResults = "cig_mag_parm_results";
public static final String MagId = "cig_mag_id";
// service instance names
More information about the cig-commits
mailing list