/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.kernel.service.persistence.impl;
import com.liferay.portal.kernel.cache.PortalCache;
import com.liferay.portal.kernel.cache.PortalCacheListener;
import com.liferay.portal.kernel.cache.PortalCacheListenerScope;
import com.liferay.portal.kernel.cache.PortalCacheManager;
import com.liferay.portal.kernel.dao.jdbc.MappingSqlQuery;
import com.liferay.portal.kernel.dao.jdbc.MappingSqlQueryFactoryUtil;
import com.liferay.portal.kernel.dao.jdbc.ParamSetter;
import com.liferay.portal.kernel.dao.jdbc.RowMapper;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.model.BaseModel;
import com.liferay.portal.kernel.service.persistence.BasePersistence;
import java.util.Collections;
import java.util.List;
/**
* @author Shuyang Zhou
*/
public class CachelessTableMapperImpl
<L extends BaseModel<L>, R extends BaseModel<R>>
extends TableMapperImpl<L, R> {
public CachelessTableMapperImpl(
String tableName, String companyColumnName, String leftColumnName,
String rightColumnName, BasePersistence<L> leftBasePersistence,
BasePersistence<R> rightBasePersistence) {
super(
tableName, companyColumnName, leftColumnName, rightColumnName,
leftBasePersistence, rightBasePersistence);
getTableMappingSqlQuery = MappingSqlQueryFactoryUtil.getMappingSqlQuery(
leftBasePersistence.getDataSource(),
"SELECT * FROM " + tableName + " WHERE " + leftColumnName +
" = ? AND " + rightColumnName + " = ?",
RowMapper.COUNT, ParamSetter.BIGINT, ParamSetter.BIGINT);
leftToRightPortalCache = new DummyPortalCache(
leftToRightPortalCache.getPortalCacheName(),
leftToRightPortalCache.getPortalCacheManager());
rightToLeftPortalCache = new DummyPortalCache(
rightToLeftPortalCache.getPortalCacheName(),
rightToLeftPortalCache.getPortalCacheManager());
destroy();
}
@Override
protected boolean containsTableMapping(
long leftPrimaryKey, long rightPrimaryKey, boolean updateCache) {
List<Integer> counts = null;
try {
counts = getTableMappingSqlQuery.execute(
leftPrimaryKey, rightPrimaryKey);
}
catch (Exception e) {
throw new SystemException(e);
}
if (counts.isEmpty()) {
return false;
}
int count = counts.get(0);
if (count == 0) {
return false;
}
return true;
}
protected final MappingSqlQuery<Integer> getTableMappingSqlQuery;
protected static class DummyPortalCache
implements PortalCache<Long, long[]> {
@Override
public long[] get(Long key) {
return null;
}
@Override
public List<Long> getKeys() {
return Collections.emptyList();
}
/**
* @deprecated As of 7.0.0, replaced by {@link #getPortalCacheName()}
*/
@Deprecated
@Override
public String getName() {
return getPortalCacheName();
}
@Override
public PortalCacheManager<Long, long[]> getPortalCacheManager() {
return portalCacheManager;
}
@Override
public String getPortalCacheName() {
return portalCacheName;
}
@Override
public void put(Long key, long[] value) {
}
@Override
public void put(Long key, long[] value, int timeToLive) {
}
@Override
public void registerPortalCacheListener(
PortalCacheListener<Long, long[]> portalCacheListener) {
}
@Override
public void registerPortalCacheListener(
PortalCacheListener<Long, long[]> portalCacheListener,
PortalCacheListenerScope portalCacheListenerScope) {
}
@Override
public void remove(Long key) {
}
@Override
public void removeAll() {
}
@Override
public void unregisterPortalCacheListener(
PortalCacheListener<Long, long[]> portalCacheListener) {
}
@Override
public void unregisterPortalCacheListeners() {
}
protected DummyPortalCache(
String portalCacheName,
PortalCacheManager<Long, long[]> portalCacheManager) {
this.portalCacheName = portalCacheName;
this.portalCacheManager = portalCacheManager;
}
protected final PortalCacheManager<Long, long[]> portalCacheManager;
protected final String portalCacheName;
}
}