Package com.ipc.oce.objects

Source Code of com.ipc.oce.objects._OCCommonObject

/**
*
*/
package com.ipc.oce.objects;

import org.jinterop.dcom.common.JIException;
import org.jinterop.dcom.core.JIVariant;
import org.jinterop.dcom.impls.automation.IJIDispatch;

import com.ipc.oce.OCApp;
import com.ipc.oce.OCObject;
import com.ipc.oce.metadata.OCType;
import com.ipc.oce.metadata.objects._OCCommonMetadataObject;
import com.ipc.oce.xml.oc.OCXMLDataType;

/**
* @author Konovalov
*
*/
public class _OCCommonObject extends OCObject implements MetadataHolder {
 
  protected BeforeWriteHandler preWH = null;
 
  protected AfterWriteHandler postWH = null;
 
  private _OCCommonMetadataObject metadata = null;
 
  /**
   * @param object
   */
  public _OCCommonObject(OCObject object) {
    super(object);
  }

  /**
   * @param aDispatch
   */
  public _OCCommonObject(IJIDispatch aDispatch) {
    super(aDispatch);
  }

  /**
   * @param aDispatch
   * @throws JIException
   */
  public _OCCommonObject(JIVariant aDispatch) throws JIException {
    super(aDispatch);
  }
 
  public final void setBeforeWriteHandler(BeforeWriteHandler preWH) {
    this.preWH = preWH;
    this.preWH.setAppInstance(OCApp.getInstance(getAssociatedSessionID()));
  }

  public final void setAfterWriteHandler(AfterWriteHandler postWH) {
    this.postWH = postWH;
    this.postWH.setAppInstance(OCApp.getInstance(getAssociatedSessionID()));
  }

  /**
   * Предоставляет доступ к объекту описания метаданных.
   * @return _OCCommonMetadataObject
   * @throws JIException
   */
  public _OCCommonMetadataObject getMetadata() throws JIException {
    if (metadata == null) {
      metadata = new _OCCommonMetadataObject(callMethodA("Metadata"));
    }
    return metadata;
  }
 
  /**
   * Содержит ссылку на элемент. Это значение может быть записано в базу данных для полей соответствующего типа.
   * @return
   * @throws JIException
   */
  public _OCCommonRef getRef() throws JIException {
    return new _OCCommonRef(get("Ref"));
  }
 
  /**
   * Создает новый элемент копированием существующего.
   * Примечание:
   * Использование метода не приводит к записи созданного объекта в базу данных.
   * @return
   * @throws JIException
   */
  public _OCCommonObject copy() throws JIException {
    _OCCommonObject co = new _OCCommonObject(callMethodA("Copy")) {
     
      @Override
      public void write() throws JIException {
        throw new UnsupportedOperationException();
       
      }
    };
    return co;
  }
 
  /**
   * Определяет, записан ли объект в базу данных.
   * @return Истина - изменяется еще ни разу не записанный документ; Ложь - документ уже записан.
   * @throws JIException
   */
  public Boolean isNew() throws JIException {
    return callMethodA("IsNew").getObjectAsBoolean();
  }
 
  /**
   * Запись объекта в базу данных
   * @throws JIException
   */
  public void write() throws JIException {
    if (preWH != null) {
      preWH.handle(this);
    }
    callMethod("Write");
    if (postWH != null) {
      postWH.handle(this);
    }
  }
 
  /**
   * Чтение объекта из базы данных
   * @throws JIException
   */
  public void read() throws JIException {
    callMethod("Read");
  }

  /**
   * Выполняет блокировку объекта от изменения другими режимами или пользователями.
   * @throws JIException
   */
  public void lock() throws JIException {
    callMethod("Lock");
  }

  /**
   * Выполняет разблокировку объекта, если он заблокирован этим объектом.
   * @throws JIException
   */
  public void unlock() throws JIException {
    callMethod("Unlock");
  }

  /**
   * Определяет, заблокирован ли объект данным объектом.
   * @return
   * @throws JIException
   */
  public Boolean isLocked() throws JIException {
    return callMethodA("IsLocked").getObjectAsBoolean();
  }

  public <T extends OCObject> void fill(T object) throws JIException {
    callMethod("Fill", new JIVariant(ocObject2Dispatch(object)));
  }

  /**
   * Удаляет элемент из базы данных. Важно! В отличие от метода
   * УстановитьПометкуУдаления, данный производит непосредственное удаление
   * элемента справочника без возможности восстановления и без проверки
   * ссылочной целостности. Использовать данный метод нужно крайне
   * осмотрительно.
   *
   * @throws JIException
   */
  public void delete() throws JIException {
    callMethod("Delete");
  }
 
  /**
   * Получение xml-типа объекта.
   * @return
   * @throws JIException
   */
  public OCXMLDataType getXMLType() throws JIException {
    OCApp app = OCApp.getInstance(getAssociatedSessionID());
    return app.getXMLTypeOf(this);
  }
 
  /**
   * Получение типа объекта
   * @return OCType
   * @throws JIException
   */
  public OCType getOCType() throws JIException {
    OCApp app = OCApp.getInstance(getAssociatedSessionID());
    return app.fromXMLType(getXMLType());
  }
}
TOP

Related Classes of com.ipc.oce.objects._OCCommonObject

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.