Package jetbrains.communicator.mock

Source Code of jetbrains.communicator.mock.MockIDEFacade$MyChangeAdapter

/*
* Copyright 2000-2006 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
*
* 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 jetbrains.communicator.mock;

import com.intellij.util.ConcurrencyUtil;
import com.intellij.util.diff.Diff;
import jetbrains.communicator.commands.FindUsersCommand;
import jetbrains.communicator.commands.SendMessageInvoker;
import jetbrains.communicator.core.Pico;
import jetbrains.communicator.core.TestFactory;
import jetbrains.communicator.core.dispatcher.LocalMessage;
import jetbrains.communicator.core.transport.TransportEvent;
import jetbrains.communicator.core.users.User;
import jetbrains.communicator.core.vfs.ProjectsData;
import jetbrains.communicator.core.vfs.VFile;
import jetbrains.communicator.ide.*;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.Nullable;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
* @author Kir Maximov
*/
public class MockIDEFacade implements IDEFacade {
  private File myDataDir;
  private ProgressIndicator myIndicator = new NullProgressIndicator();
  @NonNls
  private String myLog = "";
  private FindUsersCommand.UsersInfo myUsersInfo = new FindUsersCommand.UsersInfo();
  private LocalMessage myMessageToReturn;
  private String[] myProjects = new String[0];
  private final Map<Cloneable,String> myFileText = new HashMap<Cloneable, String>();
  private String myMessage;
  private String myProjectId;
  private String myProjectName;
  private boolean myAnswer;
  private static final ExecutorService ourExecutorService = Executors.newCachedThreadPool(ConcurrencyUtil.newNamedThreadFactory("IDETalk pooled thread"));

  public MockIDEFacade() {
    myDataDir = null;
  }

  public MockIDEFacade(Class<? extends Object> testClass) {
    try {
      myDataDir = TestFactory.createDir(testClass);
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }

  public MockIDEFacade(File dataDir) {
    myDataDir = dataDir;
  }

  @Override
  public void invokeSendMessage(User[] allUsers, User[] defaultTargetUsers, String message, SendMessageInvoker sendMessageInvoker) {
    throw new UnsupportedOperationException("Not implemented in " + getClass().getName());
  }

  @Override
  public void showSearchHistoryResults(List<LocalMessage> foundMessages, User user) {
    throw new UnsupportedOperationException("Not implemented in " + getClass().getName());
  }

  @Override
  public ProjectsData getProjectsData() {
    ProjectsData projectsData = new ProjectsData();
    for (String myProject : myProjects) {
      projectsData.setProjectFiles(myProject, new VFile[0]);
    }
    return projectsData;
  }

  @Override
  public void showUserFiles(User user, ProjectsData data) {
    throw new UnsupportedOperationException("Not implemented in " + getClass().getName());
  }

  @Override
  public boolean hasFile(VFile file) {
    throw new UnsupportedOperationException("Not implemented in " + getClass().getName());
  }

  @Override
  public void open(VFile file) {
    throw new UnsupportedOperationException("Not implemented in " + getClass().getName());
  }

  @Override
  public void fillFileContents(VFile vFile) {
    vFile.setContents(myFileText.get(vFile));
  }

  @Override
  public void showDiffFor(User remoteUser, VFile vFile, String compareWith) {
    throw new UnsupportedOperationException("Not implemented in " + getClass().getName());
  }

  @Override
  public Change[] getDiff(Object[] src, Object[] dest) {
    List<MyChangeAdapter> result = new ArrayList<MyChangeAdapter>();
    Diff.Change change = null;
    try {
      change = Diff.buildChanges(src, dest);
    }
    catch (Exception e) {
      return new Change[0];
    }
    while (change != null) {
      result.add(new MyChangeAdapter(change));
      change = change.link;
    }
    return result.toArray(new Change[result.size()]);
  }

  @Override
  public String[] getProjects() {
    return myProjects;
  }

  @Override
  public FindUsersCommand.UsersInfo chooseUsersToBeAdded(List/*<User>*/ foundNewUsers, String[] availableGroups) {
    myLog += "chooseUsersToBeAdded";
    return myUsersInfo;
  }

  @Override
  public String getMessageLine(String labelText, String titleText) {
    return myMessage;
  }

  @Override
  public String getMessage(String labelText, String titleText, String optionalOKButtonText) {
    return myMessage;
  }

  public void setReturnedMessage(String message) {
    myMessage = message;
  }

  @Override
  public void showMessage(String title, String message) {
    if (Pico.isUnitTest()) {
      System.out.println(title + " : " + message);
    }
    myLog += "showMessage" + message;
  }

  @Override
  public boolean askQuestion(String title, String question) {
    return myAnswer;
  }

  @Override
  public File getCacheDir() {
    if (myDataDir == null) throw new NullPointerException();
    return myDataDir;
  }

  @Override
  public File getConfigDir() {
    if (myDataDir == null) throw new NullPointerException();
    return myDataDir;
  }

  @Override
  public Future<?> runOnPooledThread(Runnable toRun) {
    return ourExecutorService.submit(toRun);
  }

  public void setDataDir(File dataDir) {
    myDataDir = dataDir;
  }


  @Override
  public void runLongProcess(String processTitle, IDEFacade.Process process) throws CanceledException {
    try {
      process.run(myIndicator);
    } catch (Exception e) {
      if ("Canceled".equals(e.getMessage())) {
        throw new CanceledException(e);
      }
    }
  }

  public void setIndicator(ProgressIndicator indicator) {
    myIndicator = indicator;
  }


  @Override
  public LocalMessage createLocalMessageForIncomingEvent(TransportEvent event) {
    return myMessageToReturn;
  }

  @Override
  @Nullable
  public LocalMessage createLocalMessageForOutgoingEvent(OwnMessageEvent event) {
    return myMessageToReturn;
  }

  @Override
  public String getCurrentProjectId() {
    return myProjectId;
  }


  public String getAndClearLog() {
    String log = myLog;
    myLog = "";
    return log;
  }

  public void setReturnedData(FindUsersCommand.UsersInfo usersInfo) {
    myUsersInfo = usersInfo;
  }

  public void setReturnedMessage(LocalMessage message) {
    myMessageToReturn = message;
  }

  public void setReturnedProjects(String[] projectNames) {
    myProjects = projectNames;
  }

  public void setReturnedFileText(VFile vFile, String s) {
    myFileText.put(vFile, s);
  }

  public void setReturnedProjectId(String s) {
    myProjectId = s;
  }

  public void setReturnedProjectName(String projectName) {
    myProjectName = projectName;
  }

  public void setReturnedAnswer(boolean b) {
    myAnswer = b;
  }

  private static class MyChangeAdapter implements Change {
    private final Diff.Change myChange1;

    MyChangeAdapter(Diff.Change change1) {
      myChange1 = change1;
    }

    @Override
    public int getInserted() {
      return myChange1.inserted;
    }

    @Override
    public int getDeleted() {
      return myChange1.deleted;
    }

    @Override
    public int getSrcLine() {
      return myChange1.line0;
    }

    @Override
    public int getDestLine() {
      return myChange1.line1;
    }
  }
}
TOP

Related Classes of jetbrains.communicator.mock.MockIDEFacade$MyChangeAdapter

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.