Package com.ipc.oce.objects

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

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.OCObject;
import com.ipc.oce.metadata.objects.OCEnumMetadataObject;


/**
* Представляет собой ссылку на значение перечисления. Используется для ссылки на значение перечисления в реквизитах объектов базы данных и переменных встроенного языка.
* @author Konovalov
*
*/
// Специфический объект - обладает свойствами лишь отчасти повторяющими общие ссылки
public class OCEnumRef extends OCObject implements MetadataHolder, NamedRef{
  private String refFullName = null;
  private String enumValue = null;
  public OCEnumRef(OCObject object) {
    super(object);
  }

  public OCEnumRef(IJIDispatch aDispatch) {
    super(aDispatch);
  }

  public OCEnumRef(JIVariant aDispatch) throws JIException {
    super(aDispatch);
  }

  @Override
  protected IJIDispatch dispatch() { // для передачи в различные методы
    return super.dispatch();
  }
 
  /**
   * Предоставляет доступ к объекту описания метаданных перечисления. Другой путь получения того же значения - через свойство глобального контекста Метаданные. Например: Метаданные.Перечисления.ВидыКонтрагентов.
   * @return
   * @throws JIException
   */
  public OCEnumMetadataObject getMetadata() throws JIException{
    return new OCEnumMetadataObject(callMethodA("Metadata"));
  }
 
  /**
   * Определяет, является ли ссылка пустой или нет.
   * @return Истина - ссылка не указывает ни на какой объект (пустая ссылка); Ложь - в противном случае.
   * @throws JIException
   */
  public Boolean isEmpty() throws JIException{
    return callMethodA("IsEmpty").getObjectAsBoolean();
  }

  public String getRefFullName() throws JIException {
    if (refFullName == null) {
      refFullName = getMetadata().getFullName();
    }
    return refFullName;
  }
 
  /**
   * Получение значения перечисления. Используется метод
   * приведения ссылки перечисления к строке(1С).
   * В принципе аналогично нативной реализации
   * @return строковое значение перечисления.
   */
  public String getEnumValue(){
    if (enumValue == null) {
      enumValue =  toString();
    }
    return enumValue;
  }

  @Override
  public int hashCode() {
    try {
      return getEnumValue().hashCode();
    } catch (Exception e) {
      return -1;
    }
  }

  @Override
  public boolean equals(final Object paramObject) {
    if (paramObject == null || !(paramObject instanceof OCEnumRef)) {
      return false;
    }
    OCEnumRef ref = (OCEnumRef) paramObject;
    try {
      return (getEnumValue().equals(ref.getEnumValue()));
    } catch (Exception e) {
      return false;
    }
  }
 
 
 
 
}
TOP

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

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.