001    /**
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: Apr 11, 2003
005     * Time: 5:02:28 PM
006     */
007    
008    package EVolve.util;
009    
010    import java.util.ArrayList;
011    import java.util.HashMap;
012    import java.util.HashSet;
013    import java.util.Iterator;
014    import java.util.Stack;
015    
016    import javax.swing.JOptionPane;
017    
018    import EVolve.Scene;
019    import EVolve.visualization.Visualization;
020    import EVolve.visualization.XYViz.XYVisualization;
021    
022    public class HelperFuncs {
023        public static boolean inDebug = false;
024        public static int stop = -1;
025    
026        public static HashMap cloneHashMap(HashMap source) {
027             if (source == null) return null;
028    
029             Iterator it = source.keySet().iterator();
030             HashMap target = new HashMap();
031             while (it.hasNext()) {
032                 Object key = it.next();
033                 target.put(key, source.get(key));
034             }
035    
036             return target;
037         }
038    
039        public static HashSet cloneHashSet(HashSet source) {
040             if (source == null) return null;
041    
042             Iterator it = source.iterator();
043             HashSet target = new HashSet();
044             while (it.hasNext()) {
045                 target.add(it.next());
046             }
047    
048             return target;
049         }
050    
051        public static ArrayList cloneArrayList(ArrayList source) {
052            ArrayList target = new ArrayList();
053    
054            for (int i=0; i<source.size(); i++) {
055                target.add(source.get(i));
056            }
057    
058            return target;
059        }
060    
061        public static Stack cloneStack(Stack source) {
062            Stack target = new Stack();
063    
064            for (int i=0; i<source.size(); i++) {
065                target.add(source.get(i));
066            }
067    
068            return target;
069        }
070    
071        public static XYVisualization getActiveXYViz() {
072            Visualization visual = Scene.getVisualizationManager().getActiveVisualization();
073            if ((visual == null) || (!(visual instanceof XYVisualization)))
074                return null;
075    
076            return (XYVisualization)visual;
077        }
078    
079        public static void getDebugNo() {
080            String abc = JOptionPane.showInputDialog("stop condition");
081            try {
082                stop = Integer.parseInt(abc);
083            } catch (Exception e) {
084    
085            }
086            inDebug = false;
087            Scene.getUIManager().resetDebugMenu(inDebug);
088        }
089    
090        public static long translateHexString(String line) throws NumberFormatException{
091            long retVal = 0, factor = 1;
092            char[] buf = new char[line.length()];
093    
094            line.getChars(0,line.length(),buf,0);
095    
096            for (int i=buf.length-1; i>=0; i--) {
097                switch (buf[i]) {
098                    case '0':
099                    case '1':
100                    case '2':
101                    case '3':
102                    case '4':
103                    case '5':
104                    case '6':
105                    case '7':
106                    case '8':
107                    case '9':
108                        retVal = retVal + ((int)buf[i] - 0x30)*factor;
109                        break;
110                    case 'a':
111                    case 'A':
112                        retVal = retVal + 10 * factor;
113                        break;
114                    case 'b':
115                    case 'B':
116                        retVal = retVal + 11 * factor;
117                        break;
118                    case 'c':
119                    case 'C':
120                        retVal = retVal + 12 * factor;
121                        break;
122                    case 'd':
123                    case 'D':
124                        retVal = retVal + 13 * factor;
125                        break;
126                    case 'e':
127                    case 'E':
128                        retVal = retVal + 14 * factor;
129                        break;
130                    case 'f':
131                    case 'F':
132                        retVal = retVal + 15 * factor;
133                        break;
134                    default:
135                        throw new NumberFormatException();
136                }
137                factor = factor*16;
138            }
139            return retVal;
140    
141        }
142    
143        public static String restoreTimeFormat(long time) {
144            long factor = 60L*60L*1000000L;
145            String[] tokens = {"h ", "m ", "s ", " "};
146            String returnVal = "";
147            int i = 0;
148    
149            for (i=0; i<4; i++) {
150                returnVal = returnVal + time/factor + tokens[i];
151                time = time % factor;
152                if (factor >1000000) {
153                    factor = factor/60;
154                } else {
155                    factor = factor/1000;
156                }
157            }
158    
159            returnVal = returnVal + time%(60L*60L*1000000L);
160    
161            return returnVal;
162        }
163    
164    }