X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Futil%2FStringUtil.java;h=39e7b890d0b96b79453cc5aaddf122356e2e556a;hb=HEAD;hp=dc5b8a944257195d6b4dd3bbc7845183bf01b179;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/util/StringUtil.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/util/StringUtil.java index dc5b8a944..39e7b890d 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/util/StringUtil.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/util/StringUtil.java @@ -1,159 +1,159 @@ -/******************************************************************************* - * Copyright (c) 2007 VTT Technical Research Centre of Finland and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ -package org.simantics.databoard.util; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.regex.PatternSyntaxException; - -import org.simantics.databoard.Bindings; -import org.simantics.databoard.Datatypes; -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.binding.NumberBinding; -import org.simantics.databoard.binding.StringBinding; -import org.simantics.databoard.binding.error.BindingException; -import org.simantics.databoard.binding.error.RuntimeBindingException; -import org.simantics.databoard.binding.mutable.Variant; -import org.simantics.databoard.file.RuntimeIOException; -import org.simantics.databoard.serialization.Serializer; -import org.simantics.databoard.serialization.SerializerConstructionException; - -public class StringUtil { - - /** - * Convert variant to string - * - * @param v - * @return string representation - */ - public static String variantToString(Variant v) { - try { - return (String) Bindings.STR_VARIANT.create(v.getBinding(), v.getValue()); - } catch (BindingException e) { - throw new RuntimeBindingException(e); - } - } - - /** - * Convert variant's string representation to variant - * - * @param str - * @return variant - * @throws BindingException - */ - public static Variant stringToVariant(String str) throws BindingException { - return (Variant) Bindings.VARIANT.create(Bindings.STR_VARIANT, str); - } - - /** - * Convert variant to nice user readable string. - * The string is not convertible back to variant without type information. - * - * @param v - * @return string representation of the variant - */ - public static String variantToUserReadableString(Variant v) { - try { - Binding binding = v.getBinding(); - Object value = v.getValue(); - if ( binding == Bindings.STRING ) return (String) value; - if ( binding.type().equals(Datatypes.STRING)) { - StringBinding sb = (StringBinding) binding; - return sb.getValue(value); - } - - if (binding instanceof NumberBinding) { - return binding.toString(value); - } - - Serializer s = Bindings.getSerializer( Bindings.VARIANT ); - byte[] bytes = s.serialize( v ); - return Base64.encodeBytes(bytes, Base64.URL_SAFE); - } catch (BindingException e) { - // UNEXPECTED - throw new RuntimeBindingException(e); - } catch (SerializerConstructionException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeIOException(e); - } - } - - /** - * Create escaped filename from a string - * - * @param name any string - * @return file compatible string - */ - public static String escapeToFileName(String name) { - try { - return java.net.URLEncoder.encode(name, "UTF-8"); - } catch (UnsupportedEncodingException e) { - // never expected - throw new RuntimeException(e); - } - } - - /** - * Unescape filename into string - * - * @param filename - * @return any string - */ - public static String unescapeFileName(String filename) { - try { - return java.net.URLDecoder.decode(filename, "UTF-8"); - } catch (UnsupportedEncodingException e) { - // never expected - throw new RuntimeException(e); - } - } - - public static boolean simplePatternMatch(String str, String simplePattern) - { - try { - Pattern ptr = compileSimplePattern(simplePattern); - Matcher m = ptr.matcher(str); - return m.matches(); - } catch (PatternSyntaxException pse) { - return false; - } - } - - /** - * Compiles pattern from simple pattern. Simple pattern is normal - * wild card compare that supports * and ? wild cards. - * - * @param patternStr simple pattern - * @return Regexp pattern - */ - public static Pattern compileSimplePattern(String patternStr) - throws PatternSyntaxException - { - String str =""; - for (int i=0; i='a'&&c<='z') || (c>='A'&&c<='Z') || (c>='0'&&c<='9')) - str += c; - else if ( c=='?' ) - str += ".?"; - else if ( c=='*' ) - str += ".*"; - else str += "\\"+c; - } - return Pattern.compile(str); - } - -} - +/******************************************************************************* + * Copyright (c) 2007 VTT Technical Research Centre of Finland and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +package org.simantics.databoard.util; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.Datatypes; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.NumberBinding; +import org.simantics.databoard.binding.StringBinding; +import org.simantics.databoard.binding.error.BindingException; +import org.simantics.databoard.binding.error.RuntimeBindingException; +import org.simantics.databoard.binding.mutable.Variant; +import org.simantics.databoard.file.RuntimeIOException; +import org.simantics.databoard.serialization.Serializer; +import org.simantics.databoard.serialization.SerializerConstructionException; + +public class StringUtil { + + /** + * Convert variant to string + * + * @param v + * @return string representation + */ + public static String variantToString(Variant v) { + try { + return (String) Bindings.STR_VARIANT.create(v.getBinding(), v.getValue()); + } catch (BindingException e) { + throw new RuntimeBindingException(e); + } + } + + /** + * Convert variant's string representation to variant + * + * @param str + * @return variant + * @throws BindingException + */ + public static Variant stringToVariant(String str) throws BindingException { + return (Variant) Bindings.VARIANT.create(Bindings.STR_VARIANT, str); + } + + /** + * Convert variant to nice user readable string. + * The string is not convertible back to variant without type information. + * + * @param v + * @return string representation of the variant + */ + public static String variantToUserReadableString(Variant v) { + try { + Binding binding = v.getBinding(); + Object value = v.getValue(); + if ( binding == Bindings.STRING ) return (String) value; + if ( binding.type().equals(Datatypes.STRING)) { + StringBinding sb = (StringBinding) binding; + return sb.getValue(value); + } + + if (binding instanceof NumberBinding) { + return binding.toString(value); + } + + Serializer s = Bindings.getSerializer( Bindings.VARIANT ); + byte[] bytes = s.serialize( v ); + return Base64.encodeBytes(bytes, Base64.URL_SAFE); + } catch (BindingException e) { + // UNEXPECTED + throw new RuntimeBindingException(e); + } catch (SerializerConstructionException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeIOException(e); + } + } + + /** + * Create escaped filename from a string + * + * @param name any string + * @return file compatible string + */ + public static String escapeToFileName(String name) { + try { + return java.net.URLEncoder.encode(name, "UTF-8"); + } catch (UnsupportedEncodingException e) { + // never expected + throw new RuntimeException(e); + } + } + + /** + * Unescape filename into string + * + * @param filename + * @return any string + */ + public static String unescapeFileName(String filename) { + try { + return java.net.URLDecoder.decode(filename, "UTF-8"); + } catch (UnsupportedEncodingException e) { + // never expected + throw new RuntimeException(e); + } + } + + public static boolean simplePatternMatch(String str, String simplePattern) + { + try { + Pattern ptr = compileSimplePattern(simplePattern); + Matcher m = ptr.matcher(str); + return m.matches(); + } catch (PatternSyntaxException pse) { + return false; + } + } + + /** + * Compiles pattern from simple pattern. Simple pattern is normal + * wild card compare that supports * and ? wild cards. + * + * @param patternStr simple pattern + * @return Regexp pattern + */ + public static Pattern compileSimplePattern(String patternStr) + throws PatternSyntaxException + { + String str =""; + for (int i=0; i='a'&&c<='z') || (c>='A'&&c<='Z') || (c>='0'&&c<='9')) + str += c; + else if ( c=='?' ) + str += ".?"; + else if ( c=='*' ) + str += ".*"; + else str += "\\"+c; + } + return Pattern.compile(str); + } + +} +