/*
* org.openmicroscopy.shoola.util.ui.omeeditpane.WikiDataObject
*
*------------------------------------------------------------------------------
* Copyright (C) 2006-2008 University of Dundee. All rights reserved.
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*------------------------------------------------------------------------------
*/
package org.openmicroscopy.shoola.util.ui.omeeditpane;
//Java imports
//Third-party libraries
//Application-internal dependencies
/**
* Object hosting details about an OMERO object to launch.
*
* @author Jean-Marie Burel
* <a href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a>
* @author Donald MacDonald
* <a href="mailto:donald@lifesci.dundee.ac.uk">donald@lifesci.dundee.ac.uk</a>
* @version 3.0
* <small>
* (<b>Internal version:</b> $Revision: $Date: $)
* </small>
* @since 3.0-Beta4
*/
public class WikiDataObject
{
/** Identifies a <code>Project</code>. */
public static final int PROJECT = 0;
/** Identifies a <code>Dataset</code>. */
public static final int DATASET = 1;
/** Identifies a <code>Image</code>. */
public static final int IMAGE = 2;
/** Identifies a <code>Thumbnail</code>. */
public static final int THUMBNAIL = 3;
/** Identifies a <code>URL</code>. */
public static final int URL = 5;
/** Identifies an unrecognized data type */
public static final int OTHER = 6;
/** One of the constants defined by this class. */
private int index;
/** The id of the object. */
private long id;
/** The name of the object. */
private String name;
/** The first regex group captured by the regex */
private String group;
/** The regex that was recognized */
private String regex;
/** The text that was recognized by the regex. i.e. regex group 0 */
private String matchedText;
/**
* Controls if the index is supported.
*
* @param value The value to check.
*/
private void checkIndex(int value)
{
switch (value) {
case PROJECT:
case DATASET:
case IMAGE:
case THUMBNAIL:
break;
default:
throw new IllegalArgumentException("Index not supported.");
}
}
/**
* Creates a new instance.
*
* @param regex The regular that was recognized.
* @param group The text captured by the first group of the regular
* expression.
* @param matchedText The text found.
*/
WikiDataObject(String regex, String group, String matchedText)
{
this.regex = regex;
this.group = group;
this.matchedText = matchedText;
this.index = OTHER;
}
/**
* Creates a new instance.
*
* @param index One of the constants defined by this class.
* @param id The id of the object.
*/
WikiDataObject(int index, long id)
{
checkIndex(index);
this.index = index;
this.id = id;
}
/**
* Creates a new instance.
*
* @param index One of the constants defined by this class.
* @param name The name of the object.
*/
WikiDataObject(int index, String name)
{
checkIndex(index);
this.index = index;
this.name = name;
id = -1;
}
/**
* Returns the index.
*
* @return See above.
*/
public int getIndex()
{
// if we have a recognized index, return it.
if (index != OTHER) return index;
// otherwise, try to match the regex to a type
if (regex != null) {
if (regex.contains("Image")) {
index = IMAGE;
} else if (regex.contains("Project")) {
index = PROJECT;
} else if (regex.contains("Dataset")) {
index = DATASET;
} else if (regex.contains("http") || regex.contains("www"))
index = URL;
}
return index;
}
/**
* Returns the id of the object.
*
* @return See above.
*/
public long getId()
{
if (id > 0) return id;
else { // often the 'group' attribute will hold an ID
try {
id = new Long(group);
}
catch (Exception e) {
id = -1;
}
}
return id;
}
/**
* Returns the name of the object.
*
* @return See above.
*/
public String getName() { return name; }
/**
* Returns the group of the object.
*
* @return See above.
*/
public String getGroup() { return group; }
/**
* Returns the regex of the object.
*
* @return See above.
*/
public String getRegex() { return regex; }
/**
* Returns the matched Text of the object.
*
* @return See above.
*/
public String getMatchedText() { return matchedText; }
}