@RegisterArgumentFactory({ JsonArgumentAsJsonArgumentFactory.class }) public interface LocalizationDAO<E extends Localized> { // FIXME // Support for batching translation (see commented signature below) does not work. It fails at the JDBC level with // "A result was returned by the statement, when none was expected." // //@SqlBatch("select upsert_translation(:entity_id, :locale, :entity)") //void createOrUpdateTranslations(@Bind("entity_id") List<UUID> id, // @BindToString("locale") List<Locale> locale, @BindJson("entity") List<Object> json); @SqlUpdate("select upsert_translation(:entity_id, :locale, :entity)") void createOrUpdateTranslation(@Bind("entity_id") UUID id, @BindToString("locale") Locale locale, @BindJson("entity") Object json); }
private SqlStatementCustomizer create(Annotation annotation) { final RegisterArgumentFactory raf = (RegisterArgumentFactory) annotation; final List<ArgumentFactory> ary = new ArrayList<ArgumentFactory>(raf.value().length); for (Class<? extends ArgumentFactory> aClass : raf.value()) { try { ary.add(aClass.newInstance()); } catch (Exception e) { throw new IllegalStateException("unable to instantiate specified argument factory", e); } } return new SqlStatementCustomizer() { public void apply(SQLStatement q) throws SQLException { for (ArgumentFactory argumentFactory : ary) { q.registerArgumentFactory(argumentFactory); } } }; } }
@RegisterArgumentFactory(NameAF.class) public static interface Waffle { @SqlUpdate("insert into something (id, name) values (:id, :name)") void insert(@Bind("id") int id, @Bind("name") Name name); @SqlQuery("select name from something where id = :id") String findName(@Bind("id") int id); }
private SqlStatementCustomizer create(Annotation annotation) { final RegisterArgumentFactory raf = (RegisterArgumentFactory) annotation; final List<ArgumentFactory> ary = new ArrayList<ArgumentFactory>(raf.value().length); for (Class<? extends ArgumentFactory> aClass : raf.value()) { try { ary.add(aClass.newInstance()); } catch (Exception e) { throw new IllegalStateException("unable to instantiate specified argument factory", e); } } return new SqlStatementCustomizer() { @Override public void apply(SQLStatement q) throws SQLException { for (ArgumentFactory argumentFactory : ary) { q.registerArgumentFactory(argumentFactory); } } }; } }
@RegisterArgumentFactory(NameAF.class) public static interface Waffle { @SqlUpdate("insert into something (id, name) values (:id, :name)") void insert(@Bind("id") int id, @Bind("name") Name name); @SqlQuery("select name from something where id = :id") String findName(@Bind("id") int id); }
@RegisterArgumentFactory(UuidArgumentFactory.class) private interface TestingDao { @SqlUpdate("INSERT INTO transactions (start_time) VALUES (:startTime)") @GetGeneratedKeys long insertTransaction(@Bind("startTime") Timestamp timestamp); @SqlUpdate("INSERT INTO deleted_shards (shard_uuid, delete_time)\n" + "VALUES (:shardUuid, :deleteTime)") void insertDeletedShard( @Bind("shardUuid") UUID shardUuid, @Bind("deleteTime") Timestamp deleteTime); @SqlUpdate("UPDATE transactions SET end_time = :endTime WHERE transaction_id = :transactionId") int updateTransactionEndTime(@Bind("transactionId") long transactionId, @Bind("endTime") Timestamp endTime); } }
@RegisterArgumentFactory(UuidArgumentFactory.class) @RegisterMapperFactory(UuidMapperFactory.class) public interface H2ShardDao extends ShardDao { @Override @SqlBatch("MERGE INTO deleted_shards (shard_uuid, delete_time)\n" + "VALUES (:shardUuid, CURRENT_TIMESTAMP)") void insertDeletedShards(@Bind("shardUuid") Iterable<UUID> shardUuids); @SqlUpdate("DELETE FROM transactions\n" + "WHERE end_time < :maxEndTime\n" + " AND successful IN (TRUE, FALSE)\n" + " AND transaction_id NOT IN (SELECT transaction_id FROM created_shards)\n" + "LIMIT " + CLEANUP_TRANSACTIONS_BATCH_SIZE) int deleteOldCompletedTransactions(@Bind("maxEndTime") Timestamp maxEndTime); }
@RegisterArgumentFactory(UuidArgumentFactory.class) @RegisterMapperFactory(UuidMapperFactory.class) public interface H2ShardDao extends ShardDao { @Override @SqlBatch("MERGE INTO deleted_shards (shard_uuid, delete_time)\n" + "VALUES (:shardUuid, CURRENT_TIMESTAMP)") void insertDeletedShards(@Bind("shardUuid") Iterable<UUID> shardUuids); @SqlUpdate("DELETE FROM transactions\n" + "WHERE end_time < :maxEndTime\n" + " AND successful IN (TRUE, FALSE)\n" + " AND transaction_id NOT IN (SELECT transaction_id FROM created_shards)\n" + "LIMIT " + CLEANUP_TRANSACTIONS_BATCH_SIZE) int deleteOldCompletedTransactions(@Bind("maxEndTime") Timestamp maxEndTime); }
@RegisterArgumentFactory(UuidArgumentFactory.class) @RegisterMapperFactory(UuidMapperFactory.class) public interface MySqlShardDao extends ShardDao { @Override @SqlUpdate("DELETE x\n" + "FROM shard_nodes x\n" + "JOIN shards USING (shard_id)\n" + "WHERE table_id = :tableId") void dropShardNodes(@Bind("tableId") long tableId); @Override @SqlBatch("INSERT IGNORE INTO deleted_shards (shard_uuid, delete_time)\n" + "VALUES (:shardUuid, CURRENT_TIMESTAMP)") void insertDeletedShards(@Bind("shardUuid") Iterable<UUID> shardUuids); // 'order by' is needed in this statement in order to make it compatible with statement-based replication @SqlUpdate("DELETE FROM transactions\n" + "WHERE end_time < :maxEndTime\n" + " AND successful IN (TRUE, FALSE)\n" + " AND transaction_id NOT IN (SELECT transaction_id FROM created_shards)\n" + "ORDER BY end_time, transaction_id\n" + "LIMIT " + CLEANUP_TRANSACTIONS_BATCH_SIZE) int deleteOldCompletedTransactions(@Bind("maxEndTime") Timestamp maxEndTime); }
@RegisterArgumentFactory(UuidArgumentFactory.class) @RegisterMapperFactory(UuidMapperFactory.class) public interface MySqlShardDao extends ShardDao { @Override @SqlUpdate("DELETE x\n" + "FROM shard_nodes x\n" + "JOIN shards USING (shard_id)\n" + "WHERE table_id = :tableId") void dropShardNodes(@Bind("tableId") long tableId); @Override @SqlBatch("INSERT IGNORE INTO deleted_shards (shard_uuid, delete_time)\n" + "VALUES (:shardUuid, CURRENT_TIMESTAMP)") void insertDeletedShards(@Bind("shardUuid") Iterable<UUID> shardUuids); // 'order by' is needed in this statement in order to make it compatible with statement-based replication @SqlUpdate("DELETE FROM transactions\n" + "WHERE end_time < :maxEndTime\n" + " AND successful IN (TRUE, FALSE)\n" + " AND transaction_id NOT IN (SELECT transaction_id FROM created_shards)\n" + "ORDER BY end_time, transaction_id\n" + "LIMIT " + CLEANUP_TRANSACTIONS_BATCH_SIZE) int deleteOldCompletedTransactions(@Bind("maxEndTime") Timestamp maxEndTime); }
/** * @version $Id: 3c846f75122b26a9f1dd1e691fcc5911e1ee545d $ */ @RegisterMapper(PaymentOperationMapper.class) @RegisterArgumentFactory({ MapAsJsonStringArgumentFactory.class, PaymentOperationResultArgumentFactory.class }) @UseStringTemplate3StatementLocator public abstract class PaymentOperationDAO implements Transactional<PaymentOperationDAO> { @SqlUpdate public abstract void createPaymentOperation(@BindBean("operation") PaymentOperation operation); @SqlQuery public abstract List<PaymentOperation> findAllForOrderId(@Bind("orderId") UUID order); }
@RegisterMapper(TenantMapper.class) @RegisterArgumentFactory({ DateAsTimestampArgumentFactory.class }) @UseStringTemplate3StatementLocator public abstract class TenantDAO implements EntityDAO<Tenant>, Transactional<TenantDAO>, AddonsDAO<Tenant>
/** * DAO for {@link GatewayCustomerData} * * @version $Id: 0a9c99648717726bb9557816cafc91333271efba $ */ @RegisterMapper(GatewayCustomerDataMapper.class) @RegisterArgumentFactory({ MapAsJsonStringArgumentFactory.class }) @UseStringTemplate3StatementLocator public abstract class GatewayDataDAO implements Transactional<GatewayDataDAO> { @SqlQuery public abstract GatewayCustomerData getCustomerData(@Bind("customerId") UUID customerId, @Bind("gateway") String gateway); @SqlUpdate public abstract void createCustomerData(@BindBean("gatewayCustomerData") GatewayCustomerData gatewayCustomerData); @SqlUpdate public abstract void updateCustomerData(@BindBean("gatewayCustomerData") GatewayCustomerData gatewayCustomerData); @SqlQuery public abstract GatewayTenantData getTenantData(@Bind("tenantId") UUID id, @Bind("gateway") String gatewayId); @SqlUpdate public abstract void updateTenantData(@BindBean("gatewayTenantData") GatewayTenantData tenantData); @SqlUpdate public abstract void createTenantData(@BindBean("gatewayTenantData") GatewayTenantData tenantData); }
@RegisterArgumentFactory(DateAsTimestampArgumentFactory.class) @UseStringTemplate3StatementLocator public abstract class ArticleDAO
@RegisterArgumentFactory(StrategyArgumentFactory.class) @RegisterMapper(CarrierMapper.class) public interface CarrierDAO extends Transactional<CarrierDAO>
@RegisterArgumentFactory(UuidArgumentFactory.class) @RegisterMapperFactory(UuidMapperFactory.class) public interface ShardDao
@RegisterArgumentFactory(UuidArgumentFactory.class) @RegisterMapperFactory(UuidMapperFactory.class) public interface ShardDao
@RegisterArgumentFactory({ DateAsTimestampArgumentFactory.class, CurrencyAsCurrencyCodeArgumentFactory.class, OrderStatusArgumentFactory.class, MapAsJsonStringArgumentFactory.class }) @UseStringTemplate3StatementLocator
@RegisterArgumentFactory({ MapAsJsonArgumentFactory.class }) @UseStringTemplate3StatementLocator public abstract class MarketplaceProductDAO implements AddonsDAO<Product>
@RegisterArgumentFactory({ MapAsJsonArgumentFactory.class }) public interface AttachmentDAO extends EntityDAO<Attachment>, Transactional<AttachmentDAO>, LocalizationDAO<Attachment>