/*
* Copyright (c) 2012, Mayocat <hello@mayocat.org>
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package mayoapp.dao;
import java.util.List;
import org.mayocat.accounts.model.Tenant;
import org.mayocat.accounts.store.jdbi.mapper.TenantMapper;
import org.mayocat.addons.store.dbi.AddonsHelper;
import org.mayocat.store.rdbms.dbi.argument.DateAsTimestampArgumentFactory;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterArgumentFactory;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
import org.skife.jdbi.v2.sqlobject.stringtemplate.UseStringTemplate3StatementLocator;
@RegisterMapper(TenantMapper.class)
@RegisterArgumentFactory({ DateAsTimestampArgumentFactory.class })
@UseStringTemplate3StatementLocator
public abstract class TenantDAO implements EntityDAO<Tenant>, Transactional<TenantDAO>, AddonsDAO<Tenant>
{
@SqlUpdate
public abstract void updateConfiguration(@BindBean("tenant") Tenant tenant, @Bind("version") Integer version,
@Bind("data") String configuration);
@SqlUpdate
public abstract void create(@BindBean("tenant") Tenant tenant, @Bind("version") Integer version,
@Bind("data") String configuration);
@SqlUpdate
public abstract Integer update(@BindBean("tenant") Tenant tenant);
@SqlQuery
public abstract Tenant findByDefaultHost(@Bind("host") String host);
@SqlQuery
public abstract List<Tenant> findAll(@Bind("number") Integer number, @Bind("offset") Integer offset);
@SqlQuery
public abstract Integer countAllTenants();
public void createOrUpdateAddons(Tenant entity)
{
AddonsHelper.createOrUpdateAddons(this, entity);
}
}