/* ******************************************************************************
* Copyright (c) 2006-2012 XMind Ltd. and others.
*
* This file is a part of XMind 3. XMind releases 3 and
* above are dual-licensed under the Eclipse Public License (EPL),
* which is available at http://www.eclipse.org/legal/epl-v10.html
* and the GNU Lesser General Public License (LGPL),
* which is available at http://www.gnu.org/licenses/lgpl.html
* See http://www.xmind.net/license.html for details.
*
* Contributors:
* XMind Ltd. - initial API and implementation
*******************************************************************************/
package org.xmind.core.marker;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
public abstract class AbstractMarkerResource implements IMarkerResource {
private String mainPath;
private IMarker marker;
private List<IMarkerVariation> variations = null;
public AbstractMarkerResource(IMarker marker) {
this(marker, null);
}
public AbstractMarkerResource(IMarker marker, String mainPath) {
if (marker == null)
throw new IllegalArgumentException();
this.marker = marker;
this.mainPath = mainPath == null ? "" : mainPath; //$NON-NLS-1$
}
protected IMarker getMarker() {
return marker;
}
public String getPath() {
return marker.getResourcePath();
}
public String getFullPath() {
String path = getPath();
if (!path.startsWith("/")) { //$NON-NLS-1$
path = getMainPath() + path;
}
return path;
}
protected String getMainPath() {
return mainPath;
}
public synchronized List<IMarkerVariation> getVariations() {
if (variations == null) {
variations = new ArrayList<IMarkerVariation>();
loadVariations(variations);
}
return variations;
}
protected void loadVariations(List<IMarkerVariation> variations) {
}
/*
* (non-Javadoc)
* @see org.xmind.core.marker.IMarkerResource#getInputStream()
*/
public InputStream getInputStream() {
try {
return openInputStream();
} catch (IOException e) {
return null;
}
}
/*
* (non-Javadoc)
* @see org.xmind.core.marker.IMarkerResource#getOutputStream()
*/
@Deprecated
public OutputStream getOutputStream() {
try {
return openOutputStream();
} catch (IOException e) {
return null;
}
}
/**
* @deprecated
*/
@Deprecated
public InputStream getInputStream(IMarkerVariation variation) {
return getInputStream();
}
/**
* @deprecated
*/
@Deprecated
public OutputStream getOutputStream(IMarkerVariation variation) {
return getOutputStream();
}
public InputStream openInputStream(IMarkerVariation variation)
throws IOException {
return openInputStream();
}
public InputStream openInputStream(int zoom) throws IOException {
return openInputStream();
}
public InputStream openInputStream(IMarkerVariation variation, int zoom)
throws IOException {
return openInputStream();
}
@Deprecated
public OutputStream openOutputStream(IMarkerVariation variation)
throws IOException {
return openOutputStream();
}
public boolean equals(Object obj) {
if (obj == this)
return true;
if (obj == null || !(obj instanceof AbstractMarkerResource))
return false;
AbstractMarkerResource that = (AbstractMarkerResource) obj;
return this.marker.equals(that.marker);
}
}