001    /******************************************************************************
002     * Copyright (C) MActor Developers. All rights reserved.                        *
003     * ---------------------------------------------------------------------------*
004     * This file is part of MActor.                                               *
005     *                                                                            *
006     * MActor is free software; you can redistribute it and/or modify             *
007     * it under the terms of the GNU General Public License as published by       *
008     * the Free Software Foundation; either version 2 of the License, or          *
009     * (at your option) any later version.                                        *
010     *                                                                            *
011     * MActor is distributed in the hope that it will be useful,                  *
012     * but WITHOUT ANY WARRANTY; without even the implied warranty of             *
013     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
014     * GNU General Public License for more details.                               *
015     *                                                                            *
016     * You should have received a copy of the GNU General Public License          *
017     * along with MActor; if not, write to the Free Software                      *
018     * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA *
019     ******************************************************************************/
020    package org.mactor.extensions.xml;
021    
022    import java.util.HashMap;
023    import java.util.List;
024    import java.util.Map.Entry;
025    
026    import org.dom4j.DocumentHelper;
027    import org.dom4j.InvalidXPathException;
028    import org.dom4j.XPath;
029    import org.mactor.framework.ConfigException;
030    import org.mactor.framework.MactorException;
031    
032    public class ParamUtil {
033            public static HashMap<String, String> parseParams(List<String> params) throws MactorException {
034                    HashMap<String, String> map = new HashMap<String, String>();
035                    for (String string : params) {
036                            int firstIndex = string.indexOf("==");
037                            if (firstIndex > 0 && firstIndex + 2 < string.length()) {
038                                    map.put(string.substring(0, firstIndex), string.substring(firstIndex + 2));
039                            } else {
040                                    throw new MactorException("Unparseable param:  " + string);
041                            }
042                    }
043                    return map;
044            }
045            public static HashMap<XPath, String> parseXPathParams(List<String> params) throws MactorException {
046                    HashMap<String, String> m = parseParams(params);
047                    HashMap<XPath, String> xpMap = new HashMap<XPath, String>();
048                    for (Entry<String, String> e : m.entrySet()) {
049                            try {
050                                    xpMap.put(DocumentHelper.createXPath(e.getKey()), e.getValue());
051                            } catch (InvalidXPathException ie) {
052                                    throw new ConfigException("Invalid xpath expression '" + e.getKey() + "'. Error: " + ie.getMessage(), ie);
053                            }
054                    }
055                    return xpMap;
056            }
057            public static boolean isEqual(String s1, String s2) {
058                    if (s1 == null && s2 == null)
059                            return true;
060                    if (s1 == null)
061                            return false;
062                    return s1.equals(s2);
063            }
064            public static boolean isMatch(String s1, String s2) {
065                    if (s1 == null && s2 == null)
066                            return true;
067                    if (s1 == null)
068                            return false;
069                    return s1.matches(s2);
070            }
071    }