Package org.dmd.dmc.types

Source Code of org.dmd.dmc.types.ClassFilter

package org.dmd.dmc.types;

import java.io.Serializable;
import java.util.Iterator;

import org.dmd.dmc.DmcClassInfo;
import org.dmd.dmc.DmcFilter;
import org.dmd.dmc.DmcInputStreamIF;
import org.dmd.dmc.DmcObject;
import org.dmd.dmc.DmcOmni;
import org.dmd.dmc.DmcOutputStreamIF;
import org.dmd.dmc.DmcValueException;
import org.dmd.dms.generated.types.ClassDefinitionREF;

@SuppressWarnings("serial")
public class ClassFilter extends DmcFilter implements Serializable{
 
  public final static String filterName = "ClassFilter";

  DmcClassInfo  ci;
 
  public ClassFilter(){
   
  }
 
  public ClassFilter(ClassFilter cf){
    ci = cf.ci;
  }
 
  public ClassFilter(DmcClassInfo c){
    ci = c;
  }
 
  public ClassFilter(String cn) throws DmcValueException {
    ci = DmcOmni.instance().getClassInfo(cn);
    if (ci == null)
      throw(new DmcValueException("Unknown class passed to ClassFilter: " + cn));     
  }
 
  @Override
  public DmcFilter cloneIt() {
    return(new ClassFilter(this));
  }

  @Override
  public void deserializeIt(DmcInputStreamIF dis) throws Exception {
    int id = dis.readInt();
    ci = DmcOmni.instance().getClassInfo(id);
    if (ci == null)
      throw(new Exception("Unknown class id while deserializing ClassFilter: " + id));
  }

  @Override
  public String getFilterClass() {
    return(filterName);
  }

  @Override
  public String getFilterString() {
    return(ci.name);
  }

  @Override
  @SuppressWarnings("unused")
  public boolean objectMatches(DmcObject obj) {
    boolean rc = false;
    Iterator<ClassDefinitionREF> refs= obj.getObjectClass();
    while(refs.hasNext()){
      ClassDefinitionREF ref = refs.next();
      if (ref.getObject() == null){
        DmcClassInfo info = DmcOmni.instance().getClassInfo(ref.getObjectName().getNameString());
        if (ci.isInstanceOf(ref.getObjectName().getNameString())){
          rc = true;
          break;
        }
      }
      else{
        if (ci.isInstanceOf(ref.getObject().getDmdID())){
          rc = true;
          break;
        }
      }
    }
   
    return(rc);
  }

  @Override
  public void serializeIt(DmcOutputStreamIF dos) throws Exception {
    dos.writeInt(ci.id);
  }

}
TOP

Related Classes of org.dmd.dmc.types.ClassFilter

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.