001: /*
002: * $Header: /export/home/cvsroot/MyPersonalizerRepository/MyPersonalizer/Subsystems/Kernel/Sources/es/udc/mypersonalizer/kernel/model/repository/sql/plain/PlainMetaServiceAccessor.java,v 1.1.1.1 2004/03/25 12:08:36 fbellas Exp $
003: * $Revision: 1.1.1.1 $
004: * $Date: 2004/03/25 12:08:36 $
005: *
006: * =============================================================================
007: *
008: * Copyright (c) 2003, The MyPersonalizer Development Group
009: * (http://www.tic.udc.es/~fbellas/mypersonalizer/index.html) at
010: * University Of A Coruna
011: * All rights reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions are met:
015: *
016: * - Redistributions of source code must retain the above copyright notice,
017: * this list of conditions and the following disclaimer.
018: *
019: * - Redistributions in binary form must reproduce the above copyright notice,
020: * this list of conditions and the following disclaimer in the documentation
021: * and/or other materials provided with the distribution.
022: *
023: * - Neither the name of the University Of A Coruna nor the names of its
024: * contributors may be used to endorse or promote products derived from
025: * this software without specific prior written permission.
026: *
027: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
028: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
029: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
030: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
031: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
032: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
033: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
034: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
035: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
036: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
037: * POSSIBILITY OF SUCH DAMAGE.
038: *
039: */
040:
041: package es.udc.mypersonalizer.kernel.model.repository.sql.plain;
042:
043: import java.util.ArrayList;
044: import java.util.Collection;
045: import java.util.Iterator;
046:
047: import es.udc.mypersonalizer.kernel.model.repository.sql.storers.SerializableObject;
048: import es.udc.mypersonalizer.kernel.model.repository.sql.plain.PlainSerializableObjectAccessor;
049: import es.udc.mypersonalizer.kernel.model.metainfo.MetaService;
050: import es.udc.mypersonalizer.kernel.model.repository.interfaces.MetaServiceAccessor;
051: import es.udc.mypersonalizer.kernel.util.exceptions.DuplicateInstanceException;
052: import es.udc.mypersonalizer.kernel.util.exceptions.InstanceNotFoundException;
053: import es.udc.mypersonalizer.kernel.util.exceptions.InternalErrorException;
054:
055: /**
056: * This class provides a Plain-based implementation of
057: * {@link es.udc.mypersonalizer.kernel.model.repository.interfaces.MetaServiceAccessor}.
058: * Current implementation delegates on {@link
059: es.udc.mypersonalizer.kernel.model.repository.sql.plain.PlainSerializableObjectAccessor}.
060: *
061: * @author Abel Muinho
062: * @author Fernando Bellas
063: * @since 1.0
064: */
065: public class PlainMetaServiceAccessor implements MetaServiceAccessor {
066:
067: private PlainSerializableObjectAccessor accessor;
068:
069: public PlainMetaServiceAccessor() {
070: accessor = new PlainSerializableObjectAccessor();
071: }
072:
073: public MetaService findMetaService(String metaServiceIdentifier)
074: throws InternalErrorException, InstanceNotFoundException {
075:
076: SerializableObject serializable = accessor
077: .findSerializableObject(getPersistenceId(metaServiceIdentifier));
078: return (MetaService) serializable.getSerializable();
079: }
080:
081: public Collection findMetaServicesByPattern(String pattern)
082: throws InternalErrorException {
083:
084: Collection serializables = accessor
085: .findSerializableObjectsByPattern(getPersistenceId(pattern));
086: Iterator it = serializables.iterator();
087: ArrayList metaServices = new ArrayList(serializables.size());
088: while (it.hasNext()) {
089: SerializableObject serializable = (SerializableObject) it
090: .next();
091: MetaService metaService = (MetaService) serializable
092: .getSerializable();
093: metaServices.add(metaService);
094: }
095: return metaServices;
096: }
097:
098: public void removeMetaService(String metaServiceIdentifier)
099: throws InternalErrorException, InstanceNotFoundException {
100:
101: accessor
102: .removeSerializableObject(getPersistenceId(metaServiceIdentifier));
103: }
104:
105: public void updateMetaService(MetaService metaService)
106: throws InternalErrorException, InstanceNotFoundException {
107:
108: SerializableObject serializable = new SerializableObject(
109: getPersistenceId(metaService.getServiceIdentifier()),
110: metaService);
111: accessor.updateSerializableObject(serializable);
112: }
113:
114: public void addMetaService(MetaService metaService)
115: throws InternalErrorException, DuplicateInstanceException {
116:
117: SerializableObject serializable = new SerializableObject(
118: getPersistenceId(metaService.getServiceIdentifier()),
119: metaService);
120: accessor.addSerializableObject(serializable);
121: }
122:
123: /**
124: * Returns the key to be assigned to the {@link MetaService} when made
125: * persistent.
126: */
127: protected String getPersistenceId(String serviceName) {
128: String serializableObjectIdentifier = serviceName
129: + PlainSerializableObjectAccessor.SERVICE_SPECIFICATION_SUFFIX;
130: return serializableObjectIdentifier;
131: }
132:
133: }
|