Skip to content

Commit

Permalink
Add customizability of insert #619
Browse files Browse the repository at this point in the history
  • Loading branch information
timowest committed Jan 7, 2014
1 parent 6bd9049 commit 010c484
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 11 deletions.
Expand Up @@ -496,7 +496,12 @@ void serializeForMerge(QueryMetadata metadata, RelationalPath<?> entity, List<Pa
}
}

public void serializeForInsert(QueryMetadata metadata, RelationalPath<?> entity, List<Path<?>> columns,
public void serializeInsert(QueryMetadata metadata, RelationalPath<?> entity, List<Path<?>> columns,
List<Expression<?>> values, @Nullable SubQueryExpression<?> subQuery) {
templates.serializeInsert(metadata, entity, columns, values, subQuery, this);
}

void serializeForInsert(QueryMetadata metadata, RelationalPath<?> entity, List<Path<?>> columns,
List<Expression<?>> values, @Nullable SubQueryExpression<?> subQuery) {
this.entity = entity;

Expand Down Expand Up @@ -539,8 +544,6 @@ public void serializeForInsert(QueryMetadata metadata, RelationalPath<?> entity,
append(")");
}

serialize(Position.END, metadata.getFlags());

}

public void serializeUpdate(QueryMetadata metadata, RelationalPath<?> entity,
Expand Down
75 changes: 67 additions & 8 deletions querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java
Expand Up @@ -700,6 +700,13 @@ protected boolean requiresQuotes(final String identifier) {
return false;
}

/**
* template method for SELECT serialization
*
* @param metadata
* @param forCountRow
* @param context
*/
public void serialize(QueryMetadata metadata, boolean forCountRow, SQLSerializer context) {
context.serializeForQuery(metadata, forCountRow);

Expand All @@ -708,6 +715,13 @@ public void serialize(QueryMetadata metadata, boolean forCountRow, SQLSerializer
}
}

/**
* template method for DELETE serialization
*
* @param metadata
* @param entity
* @param context
*/
public void serializeDelete(QueryMetadata metadata, RelationalPath<?> entity, SQLSerializer context) {
context.serializeForDelete(metadata, entity);

Expand All @@ -721,20 +735,37 @@ public void serializeDelete(QueryMetadata metadata, RelationalPath<?> entity, SQ
}
}

public void serializeUpdate(QueryMetadata metadata, RelationalPath<?> entity,
List<Pair<Path<?>, Expression<?>>> updates, SQLSerializer context) {
context.serializeForUpdate(metadata, entity, updates);

// limit
if (metadata.getModifiers().isRestricting()) {
serializeModifiers(metadata, context);
}
/**
* template method for INSERT serialization
*
* @param metadata
* @param entity
* @param columns
* @param values
* @param subQuery
* @param context
*/
public void serializeInsert(QueryMetadata metadata, RelationalPath<?> entity,
List<Path<?>> columns, List<Expression<?>> values, SubQueryExpression<?> subQuery,
SQLSerializer context) {
context.serializeForInsert(metadata, entity, columns, values, subQuery);

if (!metadata.getFlags().isEmpty()) {
context.serialize(Position.END, metadata.getFlags());
}
}

/**
* template method for MERGE serialization
*
* @param metadata
* @param entity
* @param keys
* @param columns
* @param values
* @param subQuery
* @param context
*/
public void serializeMerge(QueryMetadata metadata, RelationalPath<?> entity,
List<Path<?>> keys, List<Path<?>> columns, List<Expression<?>> values,
SubQueryExpression<?> subQuery, SQLSerializer context) {
Expand All @@ -745,6 +776,34 @@ public void serializeMerge(QueryMetadata metadata, RelationalPath<?> entity,
}
}

/**
* template method for UPDATE serialization
*
* @param metadata
* @param entity
* @param updates
* @param context
*/
public void serializeUpdate(QueryMetadata metadata, RelationalPath<?> entity,
List<Pair<Path<?>, Expression<?>>> updates, SQLSerializer context) {
context.serializeForUpdate(metadata, entity, updates);

// limit
if (metadata.getModifiers().isRestricting()) {
serializeModifiers(metadata, context);
}

if (!metadata.getFlags().isEmpty()) {
context.serialize(Position.END, metadata.getFlags());
}
}

/**
* template method for LIMIT and OFFSET serialization
*
* @param metadata
* @param context
*/
protected void serializeModifiers(QueryMetadata metadata, SQLSerializer context) {
QueryModifiers mod = metadata.getModifiers();
if (mod.getLimit() != null) {
Expand Down

0 comments on commit 010c484

Please sign in to comment.