Skip to content

Commit

Permalink
#2065 truncate match report if string is too long for database column (
Browse files Browse the repository at this point in the history
…#2066)

* #2065 truncate match report if string is too long for database column

* #2065 rename AbstractTable.truncateString
  • Loading branch information
wsbrenk committed May 8, 2024
1 parent 6caf5cc commit d6ff6c5
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
11 changes: 11 additions & 0 deletions src/main/java/core/db/AbstractTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,17 @@ public AbstractTable(String tableName, ConnectionManager connectionManager) {
initColumns();
}

/**
* Truncate string to maximum length
* @param s String is truncated if its length exceeds given limit
* @param maxLength Length limit
* @return Truncated string
*/
static String truncateString(String s, int maxLength) {
if (s != null && s.length() > maxLength) return s.substring(0, maxLength);
return s;
}

protected String getTableType() {
return "CACHED";
}
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/core/db/MatchDetailsTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ protected void initColumns() {
ColumnDescriptor.Builder.newInstance().setColumnName("MatchID").setGetter((o) -> ((Matchdetails) o).getMatchID()).setSetter((o, v) -> ((Matchdetails) o).setMatchID((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("MatchTyp").setGetter((o) -> ((Matchdetails) o).getMatchType().getId()).setSetter((o, v) -> ((Matchdetails) o).setMatchType(MatchType.getById((int) v))).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("ArenaId").setGetter((o) -> ((Matchdetails) o).getArenaID()).setSetter((o, v) -> ((Matchdetails) o).setArenaID((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("ArenaName").setGetter((o) -> ((Matchdetails) o).getArenaName()).setSetter((o, v) -> ((Matchdetails) o).setArenaName((String) v)).setType(Types.VARCHAR).setLength(256).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("ArenaName").setGetter((o) -> truncateString(((Matchdetails) o).getArenaName(), 256)).setSetter((o, v) -> ((Matchdetails) o).setArenaName((String) v)).setType(Types.VARCHAR).setLength(256).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("Fetchdatum").setGetter((o) -> ((Matchdetails) o).getFetchDatum().toDbTimestamp()).setSetter((o, v) -> ((Matchdetails) o).setFetchDatum((HODateTime) v)).setType(Types.TIMESTAMP).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GastName").setGetter((o) -> ((Matchdetails) o).getGuestTeamName()).setSetter((o, v) -> ((Matchdetails) o).setGastName((String) v)).setType(Types.VARCHAR).setLength(256).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GastName").setGetter((o) -> truncateString(((Matchdetails) o).getGuestTeamName(), 256)).setSetter((o, v) -> ((Matchdetails) o).setGastName((String) v)).setType(Types.VARCHAR).setLength(256).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GastID").setGetter((o) -> ((Matchdetails) o).getGuestTeamId()).setSetter((o, v) -> ((Matchdetails) o).setGastId((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GastEinstellung").setGetter((o) -> ((Matchdetails) o).getGuestEinstellung()).setSetter((o, v) -> ((Matchdetails) o).setGuestEinstellung((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GastTore").setGetter((o) -> ((Matchdetails) o).getGuestGoals()).setSetter((o, v) -> ((Matchdetails) o).setGuestGoals((int) v)).setType(Types.INTEGER).isNullable(false).build(),
Expand All @@ -42,7 +42,7 @@ protected void initColumns() {
ColumnDescriptor.Builder.newInstance().setColumnName("GastTacticSkill").setGetter((o) -> ((Matchdetails) o).getGuestTacticSkill()).setSetter((o, v) -> ((Matchdetails) o).setGuestTacticSkill((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GastTacticType").setGetter((o) -> ((Matchdetails) o).getGuestTacticType()).setSetter((o, v) -> ((Matchdetails) o).setGuestTacticType((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GASTHATSTATS").setGetter((o) -> ((Matchdetails) o).getGuestHatStats()).setSetter((o, v) -> ((Matchdetails) o).setGuestHatStats((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("HeimName").setGetter((o) -> ((Matchdetails) o).getHomeTeamName()).setSetter((o, v) -> ((Matchdetails) o).setHeimName((String) v)).setType(Types.VARCHAR).setLength(256).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("HeimName").setGetter((o) -> truncateString(((Matchdetails) o).getHomeTeamName(), 256)).setSetter((o, v) -> ((Matchdetails) o).setHeimName((String) v)).setType(Types.VARCHAR).setLength(256).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("HeimId").setGetter((o) -> ((Matchdetails) o).getHomeTeamId()).setSetter((o, v) -> ((Matchdetails) o).setHeimId((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("HeimEinstellung").setGetter((o) -> ((Matchdetails) o).getHomeEinstellung()).setSetter((o, v) -> ((Matchdetails) o).setHomeEinstellung((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("HeimTore").setGetter((o) -> ((Matchdetails) o).getHomeGoals()).setSetter((o, v) -> ((Matchdetails) o).setHomeGoals((int) v)).setType(Types.INTEGER).isNullable(false).build(),
Expand All @@ -59,7 +59,7 @@ protected void initColumns() {
ColumnDescriptor.Builder.newInstance().setColumnName("SpielDatum").setGetter((o) -> ((Matchdetails) o).getMatchDate().toDbTimestamp()).setSetter((o, v) -> ((Matchdetails) o).setSpielDatum((HODateTime) v)).setType(Types.TIMESTAMP).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("WetterId").setGetter((o) -> ((Matchdetails) o).getWetterId()).setSetter((o, v) -> ((Matchdetails) o).setWetterId((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("Zuschauer").setGetter((o) -> ((Matchdetails) o).getZuschauer()).setSetter((o, v) -> ((Matchdetails) o).setZuschauer((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("Matchreport").setGetter((o) -> ((Matchdetails) o).getMatchreport()).setSetter((o, v) -> ((Matchdetails) o).setMatchreport((String) v)).setType(Types.VARCHAR).setLength(20000).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("Matchreport").setGetter((o) -> truncateString(((Matchdetails) o).getMatchreport(), 20000)).setSetter((o, v) -> ((Matchdetails) o).setMatchreport((String) v)).setType(Types.VARCHAR).setLength(20000).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("RegionID").setGetter((o) -> ((Matchdetails) o).getRegionId()).setSetter((o, v) -> ((Matchdetails) o).setRegionId((Integer) v)).setType(Types.INTEGER).isNullable(true).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("soldTerraces").setGetter((o) -> ((Matchdetails) o).getSoldTerraces()).setSetter((o, v) -> ((Matchdetails) o).setSoldTerraces((int) v)).setType(Types.INTEGER).isNullable(false).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("soldBasic").setGetter((o) -> ((Matchdetails) o).getSoldBasic()).setSetter((o, v) -> ((Matchdetails) o).setSoldBasic((int) v)).setType(Types.INTEGER).isNullable(false).build(),
Expand All @@ -77,8 +77,8 @@ protected void initColumns() {
ColumnDescriptor.Builder.newInstance().setColumnName("GuestGoal2").setGetter((o) -> ((Matchdetails) o).getGuestGoalsInPart(MatchEvent.MatchPartId.SECOND_HALF)).setSetter((o, v) -> ((Matchdetails) o).setGuestGoalsInPart(MatchEvent.MatchPartId.SECOND_HALF, (Integer) v)).setType(Types.INTEGER).isNullable(true).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GuestGoal3").setGetter((o) -> ((Matchdetails) o).getGuestGoalsInPart(MatchEvent.MatchPartId.OVERTIME)).setSetter((o, v) -> ((Matchdetails) o).setGuestGoalsInPart(MatchEvent.MatchPartId.OVERTIME, (Integer) v)).setType(Types.INTEGER).isNullable(true).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("GuestGoal4").setGetter((o) -> ((Matchdetails) o).getGuestGoalsInPart(MatchEvent.MatchPartId.PENALTY_CONTEST)).setSetter((o, v) -> ((Matchdetails) o).setGuestGoalsInPart(MatchEvent.MatchPartId.PENALTY_CONTEST, (Integer) v)).setType(Types.INTEGER).isNullable(true).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("HomeFormation").setGetter((o) -> ((Matchdetails) o).getFormation(true)).setSetter((o, v) -> ((Matchdetails) o).setHomeFormation((String) v)).setType(Types.VARCHAR).setLength(5).isNullable(true).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("AwayFormation").setGetter((o) -> ((Matchdetails) o).getFormation(false)).setSetter((o, v) -> ((Matchdetails) o).setAwayFormation((String) v)).setType(Types.VARCHAR).setLength(5).isNullable(true).build()
ColumnDescriptor.Builder.newInstance().setColumnName("HomeFormation").setGetter((o) -> truncateString(((Matchdetails) o).getFormation(true), 5)).setSetter((o, v) -> ((Matchdetails) o).setHomeFormation((String) v)).setType(Types.VARCHAR).setLength(5).isNullable(true).build(),
ColumnDescriptor.Builder.newInstance().setColumnName("AwayFormation").setGetter((o) -> truncateString(((Matchdetails) o).getFormation(false), 5)).setSetter((o, v) -> ((Matchdetails) o).setAwayFormation((String) v)).setType(Types.VARCHAR).setLength(5).isNullable(true).build()
};
}

Expand Down
1 change: 1 addition & 0 deletions src/main/resources/release_notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
### Matches
* Fix bug loading matches with no region id (#1975)
* Fix NPE when selecting match with red card (#2034)
* Fix sql error when match report is too long for the database column (#2065)

### Lineup
* Fix missing player id column in lineup assistant's player table (#1930)
Expand Down

0 comments on commit d6ff6c5

Please sign in to comment.