Package com.google.dart.engine.internal.index

Source Code of com.google.dart.engine.internal.index.IndexImpl

/*
* Copyright (c) 2013, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.eclipse.org/legal/epl-v10.html
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.dart.engine.internal.index;

import com.google.common.annotations.VisibleForTesting;
import com.google.dart.engine.ast.CompilationUnit;
import com.google.dart.engine.context.AnalysisContext;
import com.google.dart.engine.element.Element;
import com.google.dart.engine.html.ast.HtmlUnit;
import com.google.dart.engine.index.Index;
import com.google.dart.engine.index.IndexStore;
import com.google.dart.engine.index.Relationship;
import com.google.dart.engine.index.RelationshipCallback;
import com.google.dart.engine.internal.index.operation.ClearOperation;
import com.google.dart.engine.internal.index.operation.GetRelationshipsOperation;
import com.google.dart.engine.internal.index.operation.IndexHtmlUnitOperation;
import com.google.dart.engine.internal.index.operation.IndexUnitOperation;
import com.google.dart.engine.internal.index.operation.OperationProcessor;
import com.google.dart.engine.internal.index.operation.OperationQueue;
import com.google.dart.engine.internal.index.operation.RemoveContextOperation;
import com.google.dart.engine.internal.index.operation.RemoveSourceOperation;
import com.google.dart.engine.internal.index.operation.RemoveSourcesOperation;
import com.google.dart.engine.source.Source;
import com.google.dart.engine.source.SourceContainer;
import com.google.dart.engine.utilities.translation.DartOmit;

/**
* Implementation of {@link Index}.
*
* @coverage dart.engine.index
*/
@DartOmit
public class IndexImpl implements Index {
  private final IndexStore store;
  private final OperationQueue queue;
  private final OperationProcessor processor;

  public IndexImpl(IndexStore store, OperationQueue queue, OperationProcessor processor) {
    this.store = store;
    this.queue = queue;
    this.processor = processor;
  }

  @Override
  public void clear() {
    queue.enqueue(new ClearOperation(store));
  }

  @Override
  public void getRelationships(Element element, Relationship relationship,
      RelationshipCallback callback) {
    queue.enqueue(new GetRelationshipsOperation(store, element, relationship, callback));
  }

  @Override
  public String getStatistics() {
    return store.getStatistics();
  }

  @Override
  public void indexHtmlUnit(AnalysisContext context, HtmlUnit unit) {
    if (unit == null) {
      return;
    }
    if (unit.getElement() == null) {
      return;
    }
    if (unit.getElement().getAngularCompilationUnit() == null) {
      return;
    }
    queue.enqueue(new IndexHtmlUnitOperation(store, context, unit));
  }

  @Override
  public void indexUnit(AnalysisContext context, CompilationUnit unit) {
    if (unit == null) {
      return;
    }
    if (unit.getElement() == null) {
      return;
    }
    queue.enqueue(new IndexUnitOperation(store, context, unit));
  }

  @VisibleForTesting
  public boolean isOperationQueueEmpty() {
    return queue.size() == 0;
  }

  @Override
  public void removeContext(AnalysisContext context) {
    queue.enqueue(new RemoveContextOperation(store, context));
  }

  @Override
  public void removeSource(AnalysisContext context, Source source) {
    queue.enqueue(new RemoveSourceOperation(store, context, source));
  }

  @Override
  public void removeSources(AnalysisContext context, SourceContainer container) {
    queue.enqueue(new RemoveSourcesOperation(store, context, container));
  }

  @Override
  public void run() {
    processor.run();
  }

  @Override
  public void stop() {
    processor.stop(false);
  }
}
TOP

Related Classes of com.google.dart.engine.internal.index.IndexImpl

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.