/** * Abiquo community edition * cloud management application for hybrid clouds * Copyright (C) 2008-2010 - Abiquo Holdings S.L. * * This application 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 under * version 3 of the License * * This software 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 v.3 for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ package com.abiquo.server.core.task; import static com.abiquo.model.redis.RedisEntityUtils.getEntityKey; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis; import redis.clients.jedis.Transaction; import com.abiquo.model.redis.RedisDAOBase; /** * This base class provides Redis-persistence logic for {@link CacheEntry} entity. <h3>Instance to * persist</h3> * * <pre> * job.id = 0 * job.values = ["A", "B"] * </pre> * * <h3>Redis structure</h3> * * <pre> * LPUSH Entry:0 "A" * LPUSH Entry:0 "B" * </pre> * * @author eruiz@abiquo.com */ @Component public class CacheEntryDAO extends RedisDAOBase<CacheEntry> { @Override public void delete(CacheEntry entity, Transaction transaction) { transaction.del(entity.getEntityKey()); } @Override public void save(CacheEntry entity, Transaction transaction) { delete(entity, transaction); for (String value : entity.getValues()) { transaction.lpush(entity.getEntityKey(), value); } } public CacheEntry findById(final String id, Jedis jedis) { String key = getEntityKey(CacheEntry.class, id); CacheEntry entry = null; if (jedis.exists(key)) { entry = new CacheEntry(id); entry.getValues().addAll(jedis.lrange(key, 0, -1)); } return entry; } }