mirror of
https://github.com/kucherenko/jscpd.git
synced 2026-09-19 08:11:03 +08:00
234 lines
10 KiB
Java
234 lines
10 KiB
Java
/* ********************************************************************** **
|
|
** Copyright notice **
|
|
** **
|
|
** (c) 2005-2009 RSSOwl Development Team **
|
|
** http://www.rssowl.org/ **
|
|
** **
|
|
** All rights reserved **
|
|
** **
|
|
** This program and the accompanying materials are made available under **
|
|
** the terms of the Eclipse Public License v1.0 which accompanies this **
|
|
** distribution, and is available at: **
|
|
** http://www.rssowl.org/legal/epl-v10.html **
|
|
** **
|
|
** A copy is found in the file epl-v10.html and important notices to the **
|
|
** license from the team is found in the textfile LICENSE.txt distributed **
|
|
** in this package. **
|
|
** **
|
|
** This copyright notice MUST APPEAR in all copies of the file! **
|
|
** **
|
|
** Contributors: **
|
|
** RSSOwl Development Team - initial API and implementation **
|
|
** **
|
|
** ********************************************************************** */
|
|
|
|
package org.rssowl.core;
|
|
|
|
import org.eclipse.core.runtime.Assert;
|
|
import org.rssowl.core.connection.IConnectionService;
|
|
import org.rssowl.core.connection.ICredentialsProvider;
|
|
import org.rssowl.core.connection.IProtocolHandler;
|
|
import org.rssowl.core.internal.InternalOwl;
|
|
import org.rssowl.core.interpreter.IElementHandler;
|
|
import org.rssowl.core.interpreter.IFormatInterpreter;
|
|
import org.rssowl.core.interpreter.IInterpreterService;
|
|
import org.rssowl.core.interpreter.INamespaceHandler;
|
|
import org.rssowl.core.interpreter.IXMLParser;
|
|
import org.rssowl.core.persist.IModelFactory;
|
|
import org.rssowl.core.persist.dao.DAOService;
|
|
import org.rssowl.core.persist.dao.DynamicDAO;
|
|
import org.rssowl.core.persist.pref.IPreferenceScope;
|
|
import org.rssowl.core.persist.pref.IPreferencesInitializer;
|
|
import org.rssowl.core.persist.service.IModelSearch;
|
|
import org.rssowl.core.persist.service.IPersistenceService;
|
|
import org.rssowl.core.persist.service.IPreferenceService;
|
|
import org.rssowl.core.util.LongOperationMonitor;
|
|
|
|
/**
|
|
* The <code>Owl</code> class is the main facade to all API in RSSOwl. It offers
|
|
* access to services, such as for persistence, search, model and interpreter.
|
|
* Note that in some cases directly using the <code>DynamicDAO</code> class
|
|
* might be shorter.
|
|
*
|
|
* @author bpasero
|
|
* @see DynamicDAO
|
|
*/
|
|
public final class Owl {
|
|
|
|
/**
|
|
* Gives extra information on the state to the
|
|
* {@link Owl#startup(LongOperationMonitor)} call
|
|
*/
|
|
public enum StartLevel {
|
|
NOT_STARTED, STARTING, DB_OPENED, SEARCH_INDEX_OPENED, STARTED;
|
|
}
|
|
|
|
/**
|
|
* Returns the {@link StartLevel} as reached from a call to the
|
|
* {@link #startup(LongOperationMonitor)} sequence.
|
|
*
|
|
* @return the {@link StartLevel} from the
|
|
* {@link #startup(LongOperationMonitor)} sequence.
|
|
*/
|
|
public static StartLevel getStartLevel() {
|
|
return InternalOwl.getDefault().getStartLevel();
|
|
}
|
|
|
|
/**
|
|
* <p>
|
|
* Get the Implementation of <code>IApplicationService</code> that contains
|
|
* special Methods which are used through the Application and access the
|
|
* persistence layer. The implementation is looked up using the
|
|
* "org.rssowl.core.model.ApplicationService" Extension Point.
|
|
* </p>
|
|
* Subclasses may override to provide their own implementation.
|
|
*
|
|
* @return Returns the Implementation of <code>IApplicationService</code> that
|
|
* contains special Methods which are used through the Application and access
|
|
* the persistence layer.
|
|
*/
|
|
public static IApplicationService getApplicationService() {
|
|
Assert.isTrue(InternalOwl.getDefault().isStarted(), "The Owl facade has not yet finished initialization"); //$NON-NLS-1$
|
|
return InternalOwl.getDefault().getApplicationService();
|
|
}
|
|
|
|
/**
|
|
* <p>
|
|
* Provides access to the scoped preferences service in RSSOwl. There is three
|
|
* levels of preferences: Default, Global and Entity. Any preference that is
|
|
* not set at the one scope will be looked up in the parent scope until the
|
|
* Default scope is reached. This allows to easily override the preferences
|
|
* for all entities without having to define the preferences per entity.
|
|
* </p>
|
|
* <p>
|
|
* You can define default preferences by using the PreferencesInitializer
|
|
* extension point provided by this plugin.
|
|
* </p>
|
|
*
|
|
* @return Returns the IPreferenceService that provides access to the scoped
|
|
* preferences system in RSSOwl.
|
|
* @see IPreferenceScope
|
|
* @see IPreferencesInitializer
|
|
*/
|
|
public static IPreferenceService getPreferenceService() {
|
|
Assert.isTrue(InternalOwl.getDefault().isStarted(), "The Owl facade has not yet finished initialization"); //$NON-NLS-1$
|
|
return InternalOwl.getDefault().getPreferenceService();
|
|
}
|
|
|
|
/**
|
|
* Provides access to ther persistence layer of RSSOwl. This layer is
|
|
* contributable via the PersistenceService extension point provided by this
|
|
* plugin. The work that is done by the layer includes:
|
|
* <ul>
|
|
* <li>Controlling the lifecycle of the persistence layer</li>
|
|
* <li>Providing the DAOService that contains DAOs for each persistable entity
|
|
* </li>
|
|
* <li>Providing the model search to perform full-text searching</li>
|
|
* </ul>
|
|
*
|
|
* @return Returns the service responsible for all persistence related tasks.
|
|
* @see DAOService
|
|
* @see IModelSearch
|
|
*/
|
|
public static IPersistenceService getPersistenceService() {
|
|
Assert.isTrue(InternalOwl.getDefault().isStarted(), "The Owl facade has not yet finished initialization"); //$NON-NLS-1$
|
|
return InternalOwl.getDefault().getPersistenceService();
|
|
}
|
|
|
|
/**
|
|
* Provides access to the connection service of RSSOwl. This service provides
|
|
* API to load data from the internet (e.g. loading the contents of a feed).
|
|
* It is also the central place to ask for credentials if a resource requires
|
|
* authentication. Several extension points allow to customize the behavor of
|
|
* this service, including the ability to register
|
|
* <code>IProtocolHandler</code> to define the lookup process on per protocol
|
|
* basis or contributing <code>ICredentialsProvider</code> to define how
|
|
* credentials should be stored and retrieved.
|
|
*
|
|
* @return Returns the service responsible for all connection related tasks.
|
|
* @see IProtocolHandler
|
|
* @see ICredentialsProvider
|
|
*/
|
|
public static IConnectionService getConnectionService() {
|
|
Assert.isTrue(InternalOwl.getDefault().isStarted(), "The Owl facade has not yet finished initialization"); //$NON-NLS-1$
|
|
return InternalOwl.getDefault().getConnectionService();
|
|
}
|
|
|
|
/**
|
|
* Provides access to the interpreter service of RSSOwl. This service provides
|
|
* API to convert a stream of data into a model representation. In the common
|
|
* case of a XML stream this involves using a XML-Parser and creating the
|
|
* model out of the content. Various extension points allow to customize the
|
|
* behavor of the interpreter:
|
|
* <ul>
|
|
* <li>Contribute a new format interpreter using the FormatInterpreter
|
|
* extension point. This allows to display any XML in RSSOwl as Feed.</li>
|
|
* <li>Contribute a new namespace handler using the NamespaceHandler extension
|
|
* point. This allows to properly handle any new namespace in RSSOwl.</li>
|
|
* <li>Contribute a new element handler using the ElementHandler extension
|
|
* point. This makes RSSOwl understand new elements or even attributes.</li>
|
|
* <li>Contribute a new xml parser using the XMLParser extension point if you
|
|
* are not happy with the default one.</li>
|
|
* </ul>
|
|
*
|
|
* @return Returns the service responsible for interpreting a resource.
|
|
* @see IFormatInterpreter
|
|
* @see IElementHandler
|
|
* @see INamespaceHandler
|
|
* @see IXMLParser
|
|
*/
|
|
public static IInterpreterService getInterpreter() {
|
|
Assert.isTrue(InternalOwl.getDefault().isStarted(), "The Owl facade has not yet finished initialization"); //$NON-NLS-1$
|
|
return InternalOwl.getDefault().getInterpreter();
|
|
}
|
|
|
|
/**
|
|
* Provides access to the model factory of RSSOwl. This factory is used
|
|
* everywhere when new entities are created. The factory can be replaced using
|
|
* the ModelFactory extension point.
|
|
*
|
|
* @return Returns the model factory that is used to create model types.
|
|
*/
|
|
public static IModelFactory getModelFactory() {
|
|
Assert.isTrue(InternalOwl.getDefault().isStarted(), "The Owl facade has not yet finished initialization"); //$NON-NLS-1$
|
|
return InternalOwl.getDefault().getModelFactory();
|
|
}
|
|
|
|
/**
|
|
* Triggers the startup sequence of the Owl core. Will return immediately if
|
|
* the core has already been started.
|
|
*
|
|
* @param monitor A progress monitor to report progress on long running
|
|
* operations (e.g. migration).
|
|
*/
|
|
public static void startup(LongOperationMonitor monitor) {
|
|
if (!InternalOwl.getDefault().isStarted())
|
|
InternalOwl.getDefault().startup(monitor, false, false);
|
|
}
|
|
|
|
/**
|
|
* @return <code>true</code> if {@link Owl#startup(LongOperationMonitor)} has
|
|
* been called already and <code>false</code> otherwise.
|
|
*/
|
|
public static boolean isStarted() {
|
|
return InternalOwl.getDefault().isStarted();
|
|
}
|
|
|
|
/**
|
|
* @param emergency If set to <code>TRUE</code>, this method is called from a
|
|
* shutdown hook that got triggered from a non-normal shutdown (e.g. System
|
|
* Shutdown).
|
|
*/
|
|
public static void shutdown(boolean emergency) {
|
|
InternalOwl.getDefault().shutdown(emergency);
|
|
}
|
|
|
|
/**
|
|
* @return <code>true</code> if {@link Owl#shutdown(boolean)} has been called
|
|
* already and <code>false</code> otherwise.
|
|
*/
|
|
public static boolean isShuttingDown() {
|
|
return InternalOwl.getDefault().isShuttingDown();
|
|
}
|
|
}
|