001/* 002 * Copyright (c) 2010 The Regents of the University of California. 003 * All rights reserved. 004 * 005 * '$Author: crawl $' 006 * '$Date: 2012-11-26 22:22:04 +0000 (Mon, 26 Nov 2012) $' 007 * '$Revision: 31121 $' 008 * 009 * Permission is hereby granted, without written agreement and without 010 * license or royalty fees, to use, copy, modify, and distribute this 011 * software and its documentation for any purpose, provided that the above 012 * copyright notice and the following two paragraphs appear in all copies 013 * of this software. 014 * 015 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY 016 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 017 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 018 * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF 019 * SUCH DAMAGE. 020 * 021 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, 022 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 023 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE 024 * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF 025 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, 026 * ENHANCEMENTS, OR MODIFICATIONS. 027 * 028 */ 029 030package org.kepler.objectmanager.repository; 031 032import org.kepler.objectmanager.ActorMetadata; 033import org.kepler.objectmanager.cache.ActorCacheObject; 034import org.kepler.objectmanager.cache.CacheManager; 035import org.kepler.objectmanager.cache.CacheNamedObj; 036import org.kepler.objectmanager.library.LibItem; 037import org.kepler.objectmanager.library.LibraryManager; 038 039import ptolemy.kernel.ComponentEntity; 040import ptolemy.kernel.util.NamedObj; 041 042/** 043 * Created by IntelliJ IDEA. 044 * User: sean 045 * Date: Mar 10, 2010 046 * Time: 10:20:42 AM 047 */ 048 049public class AlternateGetMoml { 050 051 public AlternateGetMoml() {} 052 053 public String getMoml(NamedObj dropObj) { 054 055 String actorString = ""; 056 057 if (dropObj instanceof CacheNamedObj) { 058 CacheNamedObj cno = (CacheNamedObj) dropObj; 059 Object object = cno.get().getObject(); 060 ActorMetadata am = (ActorMetadata) object; 061 String name = am.getName(); 062 NamedObj no; 063 try { 064 no = am.getActorAsNamedObj(null); 065 } 066 catch(Exception ex) { 067 ex.printStackTrace(); 068 return ""; 069 } 070 actorString = no.exportMoML(name); 071 int pos1 = actorString.indexOf("<!DOCTYPE"); 072 int pos2 = actorString.indexOf(">", pos1); 073 int pos3 = actorString.indexOf("<", pos2); 074 if (pos1 > -1) { 075 actorString = actorString.substring(pos3, actorString.length()); 076 } 077 } 078 else if (dropObj instanceof ComponentEntity) { 079 try { 080 int liid = LibraryManager.getLiidFor((ComponentEntity)dropObj); 081 if (liid >= 0) { 082 LibItem li = LibraryManager.getInstance().getTreeItemIndexInformation(liid); 083 084 CacheManager cacheMan = CacheManager.getInstance(); 085 086 String name = li.getName(); 087 ActorCacheObject aco = (ActorCacheObject) cacheMan 088 .getObject(li.getLsid()); 089 if (aco == null) { 090 throw new Exception("Object not found: " + li.getLsid()); 091 } 092 093 ActorMetadata am = aco.getMetadata(); 094 NamedObj no = am.getActorAsNamedObj(null); 095 actorString = no.exportMoML(name); 096 // this string has an xml header and a DOCTYPE declaration 097 // following removes those elements 098 int pos1 = actorString.indexOf("<!DOCTYPE"); 099 int pos2 = actorString.indexOf(">", pos1); 100 int pos3 = actorString.indexOf("<", pos2); 101 if (pos1 > -1) { 102 actorString = actorString.substring(pos3, actorString.length()); 103 } 104 } else { 105 throw new Exception("No Library Index ID was found"); 106 } 107 108 } catch (Exception w) { 109 String msg = w.getMessage(); 110 if (msg == null) { 111 msg = "empty error message"; 112 } 113 System.out 114 .println("Error inside GetMomlFromLSID.getMoml(): " + msg); 115 try { 116 Thread.sleep(500); 117 } 118 catch(InterruptedException ignored) {} 119 try { 120 throw new Exception(); 121 } 122 catch(Exception ex) { 123 ex.printStackTrace(); 124 } 125 try { 126 Thread.sleep(500); 127 } 128 catch(InterruptedException ignored) {} 129 } 130 } 131 else { 132 System.out.println("I don't know what to do about this"); 133 } 134 // System.out.println("actorString: " + actorString); 135 return actorString; 136 } 137 138}