All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.orientechnologies.orient.core.metadata.schema.OImmutableView Maven / Gradle / Ivy

There is a newer version: 3.2.32
Show newest version
package com.orientechnologies.orient.core.metadata.schema;

import com.orientechnologies.orient.core.db.ODatabaseDocumentInternal;
import com.orientechnologies.orient.core.index.OIndex;
import com.orientechnologies.orient.core.index.OIndexManagerAbstract;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;

public class OImmutableView extends OImmutableClass implements OView {

  private final int updateIntervalSeconds;
  private final List watchClasses;
  private final List nodes;
  private final List requiredIndexesInfo;
  private String query;
  private String originRidField;
  private boolean updatable;
  private String updateStrategy;
  private Set activeIndexNames;
  private long lastRefreshTime;

  public OImmutableView(OView view, OImmutableSchema schema) {
    super(view, schema);
    this.query = view.getQuery();
    this.updateIntervalSeconds = view.getUpdateIntervalSeconds();
    this.watchClasses =
        view.getWatchClasses() == null ? null : new ArrayList<>(view.getWatchClasses());
    this.originRidField = view.getOriginRidField();
    this.updatable = view.isUpdatable();
    this.nodes = view.getNodes() == null ? null : new ArrayList<>(view.getNodes());
    this.requiredIndexesInfo =
        view.getRequiredIndexesInfo() == null
            ? null
            : new ArrayList<>(view.getRequiredIndexesInfo());
    this.updateStrategy = view.getUpdateStrategy();
    this.activeIndexNames = view.getActiveIndexNames();
    this.lastRefreshTime = view.getLastRefreshTime();
  }

  public void getRawClassIndexes(final Collection indexes) {
    ODatabaseDocumentInternal database = getDatabase();
    OIndexManagerAbstract indexManager = database.getMetadata().getIndexManagerInternal();
    for (String indexName : activeIndexNames) {
      OIndex index = indexManager.getIndex(database, indexName);
      indexes.add(index);
    }
  }

  @Override
  public String getQuery() {
    return query;
  }

  @Override
  public int getUpdateIntervalSeconds() {
    return updateIntervalSeconds;
  }

  @Override
  public List getWatchClasses() {
    return watchClasses;
  }

  public String getOriginRidField() {
    return originRidField;
  }

  public boolean isUpdatable() {
    return updatable;
  }

  @Override
  public List getNodes() {
    return nodes;
  }

  @Override
  public List getRequiredIndexesInfo() {
    return requiredIndexesInfo;
  }

  @Override
  public String getUpdateStrategy() {
    return updateStrategy;
  }

  @Override
  public long count(boolean isPolymorphic) {
    return getDatabase().countView(getName());
  }

  @Override
  public Set getActiveIndexNames() {
    return activeIndexNames;
  }

  @Override
  public long getLastRefreshTime() {
    return lastRefreshTime;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy