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}