Package com.google.dart.engine.index

Source Code of com.google.dart.engine.index.IndexFactory

/*
* 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.index;

import com.google.dart.engine.AnalysisEngine;
import com.google.dart.engine.internal.index.IndexImpl;
import com.google.dart.engine.internal.index.MemoryIndexStoreImpl;
import com.google.dart.engine.internal.index.file.CachingNodeManager;
import com.google.dart.engine.internal.index.file.ContextCodec;
import com.google.dart.engine.internal.index.file.ElementCodec;
import com.google.dart.engine.internal.index.file.FileManager;
import com.google.dart.engine.internal.index.file.FileNodeManager;
import com.google.dart.engine.internal.index.file.NodeManager;
import com.google.dart.engine.internal.index.file.RelationshipCodec;
import com.google.dart.engine.internal.index.file.SeparateFileManager;
import com.google.dart.engine.internal.index.file.SplitIndexStoreImpl;
import com.google.dart.engine.internal.index.file.StringCodec;
import com.google.dart.engine.internal.index.operation.OperationProcessor;
import com.google.dart.engine.internal.index.operation.OperationQueue;
import com.google.dart.engine.utilities.translation.DartOmit;

import java.io.File;

/**
* Factory for {@link Index} and {@link IndexStore}.
*
* @coverage dart.engine.index
*/
@DartOmit
public class IndexFactory {
  /**
   * Returns an instance of {@link IndexStore} that stores data on disk in the given directory.
   */
  public static IndexStore newFileIndexStore(File directory) {
    StringCodec stringCodec = new StringCodec();
    ContextCodec contextCodec = new ContextCodec();
    ElementCodec elementCodec = new ElementCodec(stringCodec);
    RelationshipCodec relationshipCodec = new RelationshipCodec(stringCodec);
    FileManager fileManager = new SeparateFileManager(directory);
    NodeManager nodeManager = new FileNodeManager(
        fileManager,
        AnalysisEngine.getInstance().getLogger(),
        stringCodec,
        contextCodec,
        elementCodec,
        relationshipCodec);
    nodeManager = new CachingNodeManager(nodeManager);
    return newSplitIndexStore(nodeManager);
  }

  /**
   * @return the new instance of {@link Index} which uses given {@link IndexStore}.
   */
  public static Index newIndex(IndexStore store) {
    OperationQueue queue = new OperationQueue();
    OperationProcessor processor = new OperationProcessor(queue);
    return new IndexImpl(store, queue, processor);
  }

  /**
   * @return the new instance of {@link MemoryIndexStore}.
   */
  public static MemoryIndexStore newMemoryIndexStore() {
    return new MemoryIndexStoreImpl();
  }

  /**
   * Returns an instance of {@link IndexStore} that stores data in the given {@link NodeManager}.
   */
  public static IndexStore newSplitIndexStore(NodeManager nodeManager) {
    return new SplitIndexStoreImpl(nodeManager);
  }
}
TOP

Related Classes of com.google.dart.engine.index.IndexFactory

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.