Package railo.runtime.type.util

Source Code of railo.runtime.type.util.CollectionUtil

package railo.runtime.type.util;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import railo.runtime.op.Operator;
import railo.runtime.type.Collection;
import railo.runtime.type.Collection.Key;

public class CollectionUtil {

  private static final Object NULL = new Object();

 
  public static boolean equals(Collection left, Collection right) {
    if(left.size()!=right.size()) return false;
    Iterator<Key> it = left.keyIterator();
    Key k;
    Object l,r;
    while(it.hasNext()){
      k=it.next();
      r=right.get(k,NULL);
      if(r==NULL) return false;
      l=left.get(k,NULL);
      if(!Operator.equalsEL(r, l, false, true)) return false;
    }
    return true;
  }

  /*public static String[] toStringArray(Key[] keys) {
    if(keys==null) return null;
    String[] arr=new String[keys.length];
    for(int i=0;i<keys.length;i++){
      arr[i]=keys[i].getString();
    }
    return arr;
  }*/
 
  public static String getKeyList(Iterator<Key> it, String delimiter) {
    StringBuilder sb=new StringBuilder(it.next().getString());
    if(delimiter.length()==1) {
      char c=delimiter.charAt(0);
      while(it.hasNext()) {
        sb.append(c);
        sb.append(it.next().getString());
      }
    }
    else {
      while(it.hasNext()) {
        sb.append(delimiter);
        sb.append(it.next().getString());
      }
    }
   

    return sb.toString();
  }
 

  public static String getKeyList(Collection coll, String delimiter) {
    if(coll.size()==0) return "";
    return getKeyList(coll.keyIterator(), delimiter);
  }

  public static Key[] keys(Collection coll) {
    if(coll==null) return new Key[0];
    Iterator<Key> it = coll.keyIterator();
    List<Key> rtn=new ArrayList<Key>();
    if(it!=null)while(it.hasNext()){
      rtn.add(it.next());
    }
    return rtn.toArray(new Key[rtn.size()]);
  }
 
  public static String[] keysAsString(Collection coll) {
    if(coll==null) return new String[0];
    Iterator<Key> it = coll.keyIterator();
    List<String> rtn=new ArrayList<String>();
    if(it!=null)while(it.hasNext()){
      rtn.add(it.next().getString());
    }
    return rtn.toArray(new String[rtn.size()]);
  }

  public static boolean isEmpty(Map<?, ?> map) {
    return map==null || map.size()==0;
  }

  /*public static int hashCode(Collection coll) { produce infiniti loop when there is a refrerence to itself or a anchestor

    int hashCode = 1;
    Iterator<Entry<Key, Object>> it = coll.entryIterator();
    Entry<Key, Object> e;
    while(it.hasNext()) {
      e = it.next();
      hashCode = 31*hashCode+
     
      (
           (e.getKey()==null?0:e.getKey().hashCode()) ^
            (e.getValue()==null ? 0 : e.getValue().hashCode())   
      );
    }
    return hashCode;
  }*/
TOP

Related Classes of railo.runtime.type.util.CollectionUtil

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.