All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ORG.oclc.oai.server.crosswalk.CrosswalkItem Maven / Gradle / Ivy

/**
 * Copyright 2006 OCLC Online Computer Library Center 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.
 */
package ORG.oclc.oai.server.crosswalk;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

import ORG.oclc.oai.server.verb.OAIInternalServerError;

public class CrosswalkItem {
    private String contentType = null;
    private String docType = null;
    private String encoding = null;
    private String nativeRecordSchema = null;
    private String metadataPrefix = null;
    private String schema = null;
    private String metadataNamespace = null;
    private String xsltName = null;
    private Crosswalk crosswalk = null;
    private int rank = -1;
    
    public static final int RANK_DIRECTLY_AVAILABLE = 0;
    public static final int RANK_DERIVED = 1;

    public CrosswalkItem(String nativeRecordSchema, String metadataPrefix,
			 String schema, String metadataNamespace,
			 Crosswalk crosswalk, int rank) {
	this(nativeRecordSchema, metadataPrefix, schema, metadataNamespace,
	     rank);
	this.crosswalk = crosswalk;
    }
    
    public CrosswalkItem(String nativeRecordSchema, String metadataPrefix,
			 String schema, String metadataNamespace,
			 int rank) {
	this.nativeRecordSchema = nativeRecordSchema;
	this.metadataPrefix = metadataPrefix;
	this.schema = schema;
	this.metadataNamespace = metadataNamespace;
	this.rank = rank;
    }
    
    public CrosswalkItem(String metadataPrefix, String schema,
			 String metadataNamespace, Crosswalk crosswalk) {
	this(metadataPrefix, metadataPrefix, schema, metadataNamespace,
	     RANK_DIRECTLY_AVAILABLE);
	this.crosswalk = crosswalk;
    }
    
    public CrosswalkItem(String metadataPrefix, String schema,
			 String metadataNamespace, Class crosswalkClass)
	throws OAIInternalServerError {
	this(metadataPrefix, metadataPrefix, schema, metadataNamespace,
	     RANK_DIRECTLY_AVAILABLE);
	try {
	    this.crosswalk = getCrosswalk(crosswalkClass);
	} catch (Exception e) {
	    e.printStackTrace();
	    throw new OAIInternalServerError(e.getMessage());
	}
    }
    
    public CrosswalkItem(String nativeRecordSchema, String metadataPrefix,
			 String schema, String metadataNamespace,
			 Class crosswalkClass, String xsltName)
	throws OAIInternalServerError {
	this(nativeRecordSchema, metadataPrefix, schema, metadataNamespace,
	     RANK_DERIVED);
	this.xsltName = xsltName;
	try {
	    this.crosswalk = getCrosswalk(crosswalkClass);
	} catch (Exception e) {
	    e.printStackTrace();
	    throw new OAIInternalServerError(e.getMessage());
	}
    }
    
    public CrosswalkItem(String nativeRecordSchema, String metadataPrefix,
			 String schema, String metadataNamespace,
			 Class crosswalkClass)
	throws OAIInternalServerError {
	this(nativeRecordSchema, metadataPrefix, schema, metadataNamespace,
	     RANK_DIRECTLY_AVAILABLE);
	try {
	    this.crosswalk = getCrosswalk(crosswalkClass);
	} catch (Exception e) {
	    e.printStackTrace();
	    throw new OAIInternalServerError(e.getMessage());
	}
    }

    private Crosswalk getCrosswalk(Class crosswalkClass)
	throws NoSuchMethodException, InstantiationException,
	       IllegalAccessException, InvocationTargetException {
	Constructor constructor = crosswalkClass.getConstructor(new Class[] {CrosswalkItem.class});
	return (Crosswalk)constructor.newInstance(new Object[] {this});
    }
	
    public String getNativeRecordSchema() { return nativeRecordSchema; }
    public String getMetadataPrefix() { return metadataPrefix; }
    public String getMetadataNamespace() { return metadataNamespace; }
    public String getSchema() { return schema; }
    public Crosswalk getCrosswalk() { return crosswalk; }
    public String getContentType() { return contentType; }
    public String getDocType() { return docType; }
    public String getEncoding() { return encoding; }
    public String getXSLTName() { return xsltName; }
    
    public int getRank() { return rank; }

    public String toString() {
	StringBuffer sb = new StringBuffer();
	sb.append("CrosswalkItem: " );
	sb.append(getNativeRecordSchema());
	sb.append(":");
 	sb.append(getMetadataPrefix());
	sb.append(":");
	sb.append(getMetadataNamespace());
	sb.append(":");
	sb.append(getSchema());
	sb.append(":");
	sb.append(getCrosswalk());
	sb.append(":");
	sb.append(getRank());
	return sb.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy