001/* 002 * #%L 003 * Netarchivesuite - harvester 004 * %% 005 * Copyright (C) 2005 - 2014 The Royal Danish Library, the Danish State and University Library, 006 * the National Library of France and the Austrian National Library. 007 * %% 008 * This program is free software: you can redistribute it and/or modify 009 * it under the terms of the GNU Lesser General Public License as 010 * published by the Free Software Foundation, either version 2.1 of the 011 * License, or (at your option) any later version. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Lesser Public License for more details. 017 * 018 * You should have received a copy of the GNU General Lesser Public 019 * License along with this program. If not, see 020 * <http://www.gnu.org/licenses/lgpl-2.1.html>. 021 * #L% 022 */ 023package dk.netarkivet.harvester.datamodel.extendedfield; 024 025import java.util.List; 026 027import dk.netarkivet.harvester.datamodel.DAO; 028 029/** 030 * Interface for creating and accessing extended fields in persistent storage. 031 */ 032public abstract class ExtendedFieldTypeDAO implements DAO { 033 034 /** The database singleton model. */ 035 protected static ExtendedFieldTypeDAO instance; 036 037 /** 038 * constructor used when creating singleton. Do not call directly. 039 */ 040 protected ExtendedFieldTypeDAO() { 041 } 042 043 /** 044 * Reset the DAO instance. Only for use from within tests. 045 */ 046 protected static void reset() { 047 instance = null; 048 } 049 050 /** 051 * Tests if exists an ExtendedFieldType with the given ID. 052 * 053 * @param aExtendedfieldtypeId An id belonging to an ExtendedFieldType 054 * @return true, if there exists an ExtendedFieldType with the given ID, otherwise returns false. 055 */ 056 public abstract boolean exists(Long aExtendedfieldtypeId); 057 058 /** 059 * Read an ExtendedFieldType belonging to the given id. 060 * 061 * @param aExtendedfieldtypeId an id belonging to a ExtendedFieldType 062 * @return an ExtendedFieldType from belonging to the given id. 063 */ 064 public abstract ExtendedFieldType read(Long aExtendedfieldtypeId); 065 066 /** 067 * @return a list of all ExtendedFieldTypes. 068 */ 069 public abstract List<ExtendedFieldType> getAll(); 070 071 /** 072 * If an instance exists, return it, otherwise instantiate one, and return it. 073 * 074 * @return the instance of this class. 075 */ 076 public static synchronized ExtendedFieldTypeDAO getInstance() { 077 if (instance == null) { 078 instance = new ExtendedFieldTypeDBDAO(); 079 } 080 return instance; 081 } 082 083}