it.tidalwave.netbeans.filesystem.sync.FileSystemSynchronizer Maven / Gradle / Ivy
/***********************************************************************************************************************
*
* OpenBlueSky - NetBeans Platform Enhancements
* Copyright (C) 2006-2011 by Tidalwave s.a.s. (http://www.tidalwave.it)
*
***********************************************************************************************************************
*
* 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.
*
***********************************************************************************************************************
*
* WWW: http://openbluesky.java.net
* SCM: https://bitbucket.org/tidalwave/openbluesky-src
*
**********************************************************************************************************************/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package it.tidalwave.netbeans.filesystem.sync;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnegative;
import javax.annotation.Nonnull;
import java.beans.PropertyChangeListener;
import java.io.IOException;
import org.openide.util.Lookup;
import org.openide.filesystems.FileObject;
/**
*
* @author fritz
*/
public interface FileSystemSynchronizer
{
/***************************************************************************
*
**************************************************************************/
public static interface Context
{
@Nonnull
public FileObject getSourceFolder();
@Nonnull
public FileObject getTargetFolder();
}
/***************************************************************************
*
**************************************************************************/
public static interface Strategy
{
public void synchronize (@CheckForNull FileObject source,
@CheckForNull FileObject target,
@Nonnull Context context);
}
/***************************************************************************
*
**************************************************************************/
public void synchronize (@Nonnull FileObject source,
@Nonnull FileObject target,
@Nonnull Strategy strategy)
throws IOException;
/***************************************************************************
*
**************************************************************************/
@Nonnegative
public int getFileCount();
/***************************************************************************
*
**************************************************************************/
@Nonnegative
public int getProcessedFileCount();
/***************************************************************************
*
**************************************************************************/
public void addPropertyChangeListener (@Nonnull PropertyChangeListener listener);
/***************************************************************************
*
**************************************************************************/
public void removePropertyChangeListener (@Nonnull PropertyChangeListener listener);
/***************************************************************************
*
**************************************************************************/
public final static class Locator
{
private Locator()
{
}
/***********************************************************************
*
* Returns a reference to a GeoViewer.View. This method can be
* called by any thread.
*
* @return the view
*
**********************************************************************/
@Nonnull
public static synchronized FileSystemSynchronizer findFileSystemSynchronizer()
{
final FileSystemSynchronizer fileSystemSynchronized = Lookup.getDefault().lookup(FileSystemSynchronizer.class);
if (fileSystemSynchronized == null)
{
throw new RuntimeException("Cannot find FileSystemSynchronizer");
}
return fileSystemSynchronized;
}
}
}