Package org.cloudfoundry.ide.eclipse.server.rse.internal

Source Code of org.cloudfoundry.ide.eclipse.server.rse.internal.ApplicationSubSystemConfiguration

/*******************************************************************************
* Copyright (c) 2012, 2014 Pivotal Software, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of 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.
*  Contributors:
*     Pivotal Software, Inc. - initial API and implementation
********************************************************************************/
package org.cloudfoundry.ide.eclipse.server.rse.internal;

import org.cloudfoundry.ide.eclipse.server.core.internal.ServerEventHandler;
import org.eclipse.rse.core.filters.ISystemFilter;
import org.eclipse.rse.core.filters.ISystemFilterPool;
import org.eclipse.rse.core.filters.ISystemFilterPoolManager;
import org.eclipse.rse.core.model.IHost;
import org.eclipse.rse.core.subsystems.IConnectorService;
import org.eclipse.rse.core.subsystems.ISubSystem;
import org.eclipse.rse.services.clientserver.SystemSearchString;
import org.eclipse.rse.services.files.IFileService;
import org.eclipse.rse.services.search.IHostSearchResultConfiguration;
import org.eclipse.rse.services.search.IHostSearchResultSet;
import org.eclipse.rse.services.search.ISearchService;
import org.eclipse.rse.subsystems.files.core.ILanguageUtilityFactory;
import org.eclipse.rse.subsystems.files.core.model.RemoteFileFilterString;
import org.eclipse.rse.subsystems.files.core.servicesubsystem.FileServiceSubSystem;
import org.eclipse.rse.subsystems.files.core.servicesubsystem.FileServiceSubSystemConfiguration;
import org.eclipse.rse.subsystems.files.core.subsystems.IHostFileToRemoteFileAdapter;
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
import org.eclipse.wst.server.core.ServerCore;



/**
* IMPORTANT NOTE: This class can be referred by the branding extension from adopter so this class
* should not be moved or renamed to avoid breakage to adopters.
*
* @author Leo Dos Santos
* @author Christian Dupuis
*/
public class ApplicationSubSystemConfiguration extends FileServiceSubSystemConfiguration {

  private IHostFileToRemoteFileAdapter fileAdapter;

  public ApplicationSubSystemConfiguration() {
    super();
    setIsUnixStyle(true);
  }

  public IFileService createFileService(IHost host) {
    return new CloudFoundryFileService(host);
  }

  public IHostSearchResultConfiguration createSearchConfiguration(IHost host, IHostSearchResultSet resultSet,
      Object searchTarget, SystemSearchString searchString) {
    // TODO Auto-generated method stub
    return null;
  }

  public ISearchService createSearchService(IHost host) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public ISubSystem createSubSystemInternal(IHost conn) {
    CloudFoundryConnectorService connectorService = (CloudFoundryConnectorService) getConnectorService(conn);
    ISubSystem subsys = new ApplicationSubSystem(conn, connectorService, getFileService(conn),
        getHostFileAdapter(), getSearchService(conn));
    return subsys;
  }

  public IConnectorService getConnectorService(IHost conn) {
    return CloudFoundryConnectorServiceManager.getInstance().getConnectorService(conn, getServiceImplType());
  }

  public IHostFileToRemoteFileAdapter getHostFileAdapter() {
    if (fileAdapter == null) {
      fileAdapter = new CloudFoundryFileAdapter();
    }
    return fileAdapter;
  }

  public ILanguageUtilityFactory getLanguageUtilityFactory(IRemoteFileSubSystem ss) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public Class getServiceImplType() {
    return ICloudFoundryFileService.class;
  }

  @Override
  public boolean isFactoryFor(Class subSystemType) {
    boolean isFor = FileServiceSubSystem.class.equals(subSystemType);
    return isFor;
  }

  public void setConnectorService(IHost host, IConnectorService connectorService) {
    CloudFoundryConnectorServiceManager.getInstance().setConnectorService(host, getServiceImplType(), connectorService);
  }

  public boolean supportsArchiveManagement() {
    return false;
  }

  @Override
  public boolean supportsSubSystemConnect() {
    return false;
  }

  @Override
  protected void addSubSystem(ISubSystem subsys) {
    super.addSubSystem(subsys);
    if (subsys instanceof ApplicationSubSystem) {
      ServerCore.addServerLifecycleListener((ApplicationSubSystem) subsys);
      ServerEventHandler.getDefault().addServerListener((ApplicationSubSystem) subsys);
    }
  }

  @Override
  protected ISystemFilterPool createDefaultFilterPool(ISystemFilterPoolManager mgr) {
    ISystemFilterPool pool = null;
    try {
      String poolName = getDefaultFilterPoolName(mgr.getName(), getId());
      pool = mgr.createSystemFilterPool(poolName, false);
      if (pool != null) {
        RemoteFileFilterString accountsFilterString = new RemoteFileFilterString(this);
        accountsFilterString.setPath(getSeparator());
        String[] filterStrings = new String[] { accountsFilterString.toString() };
        ISystemFilter filter = mgr.createSystemFilter(pool, "Accounts", filterStrings); //$NON-NLS-1$
        filter.setNonDeletable(true);
        filter.setNonRenamable(true);
      }
    }
    catch (Exception e) {
      CloudFoundryRsePlugin.logError("An error occurred creating default filter pool", e); //$NON-NLS-1$
    }
    return pool;
  }

  @Override
  protected void removeSubSystem(ISubSystem subsys) {
    if (subsys instanceof ApplicationSubSystem) {
      ServerCore.removeServerLifecycleListener((ApplicationSubSystem) subsys);
      ServerEventHandler.getDefault().removeServerListener((ApplicationSubSystem) subsys);
    }
    super.removeSubSystem(subsys);
  }

}
TOP

Related Classes of org.cloudfoundry.ide.eclipse.server.rse.internal.ApplicationSubSystemConfiguration

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.