Package de.desy.tine.stringUtils

Source Code of de.desy.tine.stringUtils.StringToName

/*
* Created on Feb 10, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package de.desy.tine.stringUtils;

import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import de.desy.tine.types.NAME;
import de.desy.tine.types.NAME16;
import de.desy.tine.types.NAME32;
import de.desy.tine.types.NAME64;

/**
* \internal
*
* A set of utilities for String collections.
*
* @author jwlg
*/
public class StringToName
{
  /**
   * Disable constructor; pure utility class.
   */
  private StringToName()
  {
  }
  /**
   * Converts a collection which contains strings to a Name16 array.
   *
   * @param inputSet
   *          Set of Strings
   * @return Name16 array or null if the collection is empty.
   */
  public static NAME16[] stringSetToName16(Collection<String> inputSet)
  {
    NAME16[] rv = null;
    int len = inputSet.size();
    Iterator<String> it;
    if (len > 0)
    {
      rv = new NAME16[len];
      it = inputSet.iterator();
      for (int i = 0; (i < len) && it.hasNext(); i++)
      {
        rv[i] = new NAME16((String) it.next());
      }
    }
    return rv;
  }
  /**
   * Converts a collection which contains strings to a Name32 array.
   *
   * @param inputSet
   *          Set of Strings
   * @return Name32 array or null if the collection is empty.
   */
  public static NAME32[] stringSetToName32(Collection<String> inputSet)
  {
    NAME32[] rv = null;
    int len = inputSet.size();
    Iterator<String> it;
    if (len > 0)
    {
      rv = new NAME32[len];
      it = inputSet.iterator();
      for (int i = 0; (i < len) && it.hasNext(); i++)
      {
        rv[i] = new NAME32((String) it.next());
      }
    }
    return rv;
  }
  /**
   * Converts a collection which contains strings to a Name64 array.
   *
   * @param inputSet
   *          Set of Strings
   * @return Name64 array or null if the collection is empty.
   */
  public static NAME64[] stringSetToName64(Collection<String> inputSet)
  {
    NAME64[] rv = null;
    int len = inputSet.size();
    Iterator<String> it;
    if (len > 0)
    {
      rv = new NAME64[len];
      it = inputSet.iterator();
      for (int i = 0; (i < len) && it.hasNext(); i++)
      {
        rv[i] = new NAME64((String) it.next());
      }
    }
    return rv;
  }
  /**
   * Converts a string array which to a Name16 array.
   *
   * @param inputArray
   *          Array of Strings
   * @return Name16 array or null if the array is empty.
   */
  public static NAME16[] stringArrayToName16(String[] inputArray)
  {
    NAME16[] rv = null;
    if (inputArray == null) return null;
    int len = inputArray.length;
    if (len > 0)
    {
      rv = new NAME16[len];
      for (int i = 0; i < len; i++)
      {
        rv[i] = new NAME16((String) inputArray[i]);
      }
    }
    return rv;
  }
  /**
   * Converts a string array which to a Name64 array.
   *
   * @param inputArray
   *          Array of Strings
   * @return Name64 array or null if the array is empty.
   */
  public static NAME64[] stringArrayToName64(String[] inputArray)
  {
    NAME64[] rv = null;
    int len = inputArray.length;
    if (len > 0)
    {
      rv = new NAME64[len];
      for (int i = 0; i < len; i++)
      {
        rv[i] = new NAME64((String) inputArray[i]);
      }
    }
    return rv;
  }
  /**
   * Converts a string array which to a Name32 array.
   *
   * @param inputArray
   *          Array of Strings
   * @return Name32 array or null if the array is empty.
   */
  public static NAME32[] stringArrayToName32(String[] inputArray)
  {
    NAME32[] rv = null;
    int len = inputArray.length;
    if (len > 0)
    {
      rv = new NAME32[len];
      for (int i = 0; i < len; i++)
      {
        rv[i] = new NAME32((String) inputArray[i]);
      }
    }
    return rv;
  }
  /**
   * Filters a list of strings from a string collection.
   *
   * @param inputSet
   *          Collection containing strings.
   * @param pattern
   *          Matching pattern
   * @return List of matching strings.
   * @see WildcardMatch
   */
  public LinkedList<String> matchStringsInSet(Collection<String> inputSet, String pattern)
  {
    LinkedList<String> rv = new LinkedList<String>();
    Iterator<String> it = inputSet.iterator();
    String element = "";
    WildcardMatch wc = new WildcardMatch(pattern);
    for (it = inputSet.iterator(); it.hasNext(); element = (String) it.next())
    {
      if (wc.matches(element))
      {
        rv.add(element);
      }
    }
    return rv;
  }
  public static String[] matchStringsInArray(String[] inputArray, String pattern)
  {
    LinkedList<String> rv = new LinkedList<String>();
    WildcardMatch wc = new WildcardMatch(pattern);
    String[] outputArray;
    for (int i=0; i<inputArray.length; i++)
    {     
      if (wc.matches(inputArray[i]))
      {
        rv.add(inputArray[i]);
      }
    }
    int siz = rv.size();
    if (siz == 0) return null;
    outputArray = new String[siz];
    return (String[])rv.toArray(outputArray);   
  }
  public static int[] getContiguousEndpoints(NAME32[] inputArray, String pattern)
  { /* called in the case of local multi-channel arrays */
    if (inputArray == null || inputArray.length == 0) return null;
    String[] strArray = new String[inputArray.length];
    for (int i=0; i<inputArray.length; i++) strArray[i] = inputArray[i].name;
    return getContiguousEndpoints(strArray, pattern);
  }
  public static int[] getContiguousEndpoints(String[] inputArray, String pattern)
  { /* called in the case of local multi-channel arrays */
    int i, n;
    int endpoints[] = new int[2];
    boolean inSequence = false, finSequence = false;

    if (pattern.compareTo("*") == 0
    { /* channel array with '*' is continguous */
      endpoints[0] = 0;
      endpoints[1] = inputArray.length - 1;
      return endpoints;
    }
    WildcardMatch wc = new WildcardMatch(pattern);
    for (i=0,n=0; i<inputArray.length; i++)
    {
      if (!wc.matches(inputArray[i]))
      {
        if (inSequence) finSequence = true;
        continue;
      }
      if (finSequence) return null; /* found another match -> not contiguous ! */
      if (!inSequence) endpoints[0] = i;
      inSequence = true;
      n++;
    }
    endpoints[1] = endpoints[0] + n - 1;
    return n > 0 ? endpoints : null;
 
}
TOP

Related Classes of de.desy.tine.stringUtils.StringToName

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.