001/*
002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *     Florent Guillaume
011 *     Benoit Delbosc
012 */
013package org.nuxeo.ecm.core.storage.sql;
014
015import java.io.Serializable;
016import java.util.Calendar;
017import java.util.Collection;
018import java.util.Map;
019import java.util.Set;
020
021import javax.transaction.xa.XAException;
022import javax.transaction.xa.XAResource;
023import javax.transaction.xa.Xid;
024
025import org.nuxeo.ecm.core.api.IterableQueryResult;
026import org.nuxeo.ecm.core.api.Lock;
027import org.nuxeo.ecm.core.api.PartialList;
028import org.nuxeo.ecm.core.query.QueryFilter;
029
030/**
031 * A {@link Mapper} that uses a {@link UnifiedCachingRowMapper} for row-related operation, and delegates to the
032 * {@link Mapper} for others.
033 */
034public class UnifiedCachingMapper extends UnifiedCachingRowMapper implements CachingMapper {
035
036    /**
037     * The {@link Mapper} to which operations are delegated.
038     */
039    public Mapper mapper;
040
041    @Override
042    public void initialize(String repositoryName, Model model, Mapper mapper,
043            InvalidationsPropagator invalidationsPropagator, Map<String, String> properties) {
044        super.initialize(repositoryName, model, mapper, invalidationsPropagator, properties);
045        this.mapper = mapper;
046    }
047
048    @Override
049    public Identification getIdentification() {
050        return mapper.getIdentification();
051    }
052
053    @Override
054    public void close() {
055        super.close();
056        mapper.close();
057    }
058
059    @Override
060    public int getTableSize(String tableName) {
061        return mapper.getTableSize(tableName);
062    }
063
064    @Override
065    public void createDatabase() {
066        mapper.createDatabase();
067    }
068
069    @Override
070    public Serializable getRootId(String repositoryId) {
071        return mapper.getRootId(repositoryId);
072    }
073
074    @Override
075    public void setRootId(Serializable repositoryId, Serializable id) {
076        mapper.setRootId(repositoryId, id);
077    }
078
079    @Override
080    public PartialList<Serializable> query(String query, String queryType, QueryFilter queryFilter,
081            boolean countTotal) {
082        return mapper.query(query, queryType, queryFilter, countTotal);
083    }
084
085    @Override
086    public PartialList<Serializable> query(String query, String queryType, QueryFilter queryFilter, long countUpTo) {
087        return mapper.query(query, queryType, queryFilter, countUpTo);
088    }
089
090    @Override
091    public IterableQueryResult queryAndFetch(String query, String queryType, QueryFilter queryFilter,
092            Object... params) {
093        return mapper.queryAndFetch(query, queryType, queryFilter, params);
094    }
095
096    @Override
097    public Set<Serializable> getAncestorsIds(Collection<Serializable> ids) {
098        return mapper.getAncestorsIds(ids);
099    }
100
101    @Override
102    public void updateReadAcls() {
103        mapper.updateReadAcls();
104    }
105
106    @Override
107    public void rebuildReadAcls() {
108        mapper.rebuildReadAcls();
109    }
110
111    @Override
112    public int getClusterNodeIdType() {
113        return mapper.getClusterNodeIdType();
114    }
115
116    @Override
117    public void createClusterNode(Serializable nodeId) {
118        mapper.createClusterNode(nodeId);
119    }
120
121    @Override
122    public void removeClusterNode(Serializable nodeId) {
123        mapper.removeClusterNode(nodeId);
124    }
125
126    @Override
127    public void insertClusterInvalidations(Serializable nodeId, Invalidations invalidations) {
128        mapper.insertClusterInvalidations(nodeId, invalidations);
129    }
130
131    @Override
132    public Invalidations getClusterInvalidations(Serializable nodeId) {
133        return mapper.getClusterInvalidations(nodeId);
134    }
135
136    @Override
137    public Lock getLock(Serializable id) {
138        return mapper.getLock(id);
139    }
140
141    @Override
142    public Lock setLock(Serializable id, Lock lock) {
143        return mapper.setLock(id, lock);
144    }
145
146    @Override
147    public Lock removeLock(Serializable id, String owner, boolean force) {
148        return mapper.removeLock(id, owner, force);
149    }
150
151    @Override
152    public void markReferencedBinaries() {
153        mapper.markReferencedBinaries();
154    }
155
156    @Override
157    public int cleanupDeletedRows(int max, Calendar beforeTime) {
158        return mapper.cleanupDeletedRows(max, beforeTime);
159    }
160
161    @Override
162    public void start(Xid xid, int flags) throws XAException {
163        mapper.start(xid, flags);
164    }
165
166    @Override
167    public void end(Xid xid, int flags) throws XAException {
168        mapper.end(xid, flags);
169
170    }
171
172    @Override
173    public int prepare(Xid xid) throws XAException {
174        return mapper.prepare(xid);
175    }
176
177    @Override
178    public void commit(Xid xid, boolean onePhase) throws XAException {
179        mapper.commit(xid, onePhase);
180    }
181
182    // rollback interacts with caches so is in RowMapper
183
184    @Override
185    public void forget(Xid xid) throws XAException {
186        mapper.forget(xid);
187    }
188
189    @Override
190    public Xid[] recover(int flag) throws XAException {
191        return mapper.recover(flag);
192    }
193
194    @Override
195    public boolean setTransactionTimeout(int seconds) throws XAException {
196        return mapper.setTransactionTimeout(seconds);
197    }
198
199    @Override
200    public int getTransactionTimeout() throws XAException {
201        return mapper.getTransactionTimeout();
202    }
203
204    @Override
205    public boolean isSameRM(XAResource xares) throws XAException {
206        return mapper.isSameRM(xares);
207    }
208
209    @Override
210    public boolean isConnected() {
211        return mapper.isConnected();
212    }
213
214    @Override
215    public void connect() {
216        mapper.connect();
217    }
218
219    @Override
220    public void disconnect() {
221        mapper.disconnect();
222    }
223}