From 5d15287b2a06f978485ac6af71e33e1a82b43a65 Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期三, 15 四月 2020 16:29:55 +0800 Subject: [PATCH] fix 上传后生成版本连接池用完不释放问题 --- src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java | 275 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 192 insertions(+), 83 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java index f3604d7..f23f4ea 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java @@ -4,25 +4,24 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.highdatas.mdm.entity.Character; import com.highdatas.mdm.entity.*; import com.highdatas.mdm.mapper.TableInfoMapper; import com.highdatas.mdm.pojo.*; import com.highdatas.mdm.service.*; -import com.highdatas.mdm.util.Constant; -import com.highdatas.mdm.util.ContentBuilder; -import com.highdatas.mdm.util.DbUtils; -import com.highdatas.mdm.util.RedisClient; +import com.highdatas.mdm.util.*; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.sql.DataSource; import java.sql.Connection; +import java.sql.SQLException; import java.text.MessageFormat; import java.util.*; import java.util.stream.Collectors; - /** * @author kimi * @description @@ -49,7 +48,8 @@ IMaintainFieldService maintainFieldService; @Autowired IMasterAuthorService masterAuthorService; - + @Autowired + SqlSessionFactory sqlSessionFactory; @Resource protected DataSource dataSource; @@ -78,35 +78,35 @@ } @Override - public Result selectList(TUser user, String tableName) { - return selectList(user, tableName, null,null, (maintainService.getNowVersion(tableName).getVersion())); + public Result selectList(Character character, String tableName) { + return selectList(character, tableName, null,null, (maintainService.getNowVersion(tableName).getVersion())); } @Override - public Result selectList(TUser user, String tableName, String whereSegment) { - return selectList(user,tableName, whereSegment, (maintainService.getNowVersion(tableName).getVersion())); + public Result selectList(Character character, String tableName, String whereSegment) { + return selectList(character,tableName, whereSegment, (maintainService.getNowVersion(tableName).getVersion())); } @Override - public Result selectList(TUser user,String tableName, String whereSegment, String version) { - return selectList(user, tableName, null, whereSegment, version); + public Result selectList(Character character,String tableName, String whereSegment, String version) { + return selectList(character, tableName, null, whereSegment, version); } @Override - public Result selectList(TUser user, String tableName, List<String> fieldList, String whereSegment) { - return selectList(user, tableName, fieldList, whereSegment, maintainService.getNowVersion(tableName).getVersion()); + public Result selectList(Character character, String tableName, List<String> fieldList, String whereSegment) { + return selectList(character, tableName, fieldList, whereSegment, maintainService.getNowVersion(tableName).getVersion()); } @Override - public Result selectList(TUser user, String tableName,List<String> fieldList, String whereSegment, String version) { + public Result selectList(Character character, String tableName,List<String> fieldList, String whereSegment, String version) { try{ JSONObject object = new JSONObject(); //TODO only add version Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); String fields; if (fieldList == null || fieldList.size() == 0) { - fields = getFields(user, tableName, maintainFromVersion); + fields = getFields(character, tableName, maintainFromVersion); } else { fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); } @@ -126,8 +126,8 @@ @Override - public Result selectList(TUser user, String tableName, List<String> fields) { - return selectList(user, tableName,fields,Constant.WHERE_DEFAULT,(maintainService.getNowVersion(tableName).getVersion())); + public Result selectList(Character character, String tableName, List<String> fields) { + return selectList(character, tableName,fields,Constant.WHERE_DEFAULT,(maintainService.getNowVersion(tableName).getVersion())); } public Long getCount(String tableName, String whereSegment) { @@ -145,16 +145,16 @@ } @Override - public Long getCountByVersion (TUser user, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) { + public Long getCountByVersion (Character character, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) { try{ Maintain maintain = maintainService.selectById(maintainId); - String fields = getFields(user,tableName, maintain); - String Hfields = getFields(user, tableName, Constant.H, maintain); - String tempFields = getTempFields(user, tableName, maintain); - String A1fields = getFields(user, tableName, Constant.A1, maintain); - String A2fields = getFields(user, tableName, Constant.A2, maintain); - String tempHFields = getTempFields(user, tableName, Constant.H, maintain); + String fields = getFields(character,tableName, maintain); + String Hfields = getFields(character, tableName, Constant.H, maintain); + String tempFields = getTempFields(character, tableName, maintain); + String A1fields = getFields(character, tableName, Constant.A1, maintain); + String A2fields = getFields(character, tableName, Constant.A2, maintain); + String tempHFields = getTempFields(character, tableName, Constant.H, maintain); if (StringUtils.isEmpty(whereSegment)) { whereSegment = Constant.WHERE_DEFAULT; } @@ -171,16 +171,16 @@ } } - public Long getCountByMaxVersion (TUser user, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) { + public Long getCountByMaxVersion (Character character, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) { try{ Maintain maintain = maintainService.selectById(maintainId); - String fields = getFields(user, tableName, maintain); - String Hfields = getFields(user, tableName, Constant.H, maintain); - String tempFields = getTempFields(user, tableName, maintain); - String A1fields = getFields(user, tableName, Constant.A1, maintain); - String A2fields = getFields(user, tableName, Constant.A2, maintain); - String tempHFields = getTempFields(user, tableName, Constant.H, maintain); + String fields = getFields(character, tableName, maintain); + String Hfields = getFields(character, tableName, Constant.H, maintain); + String tempFields = getTempFields(character, tableName, maintain); + String A1fields = getFields(character, tableName, Constant.A1, maintain); + String A2fields = getFields(character, tableName, Constant.A2, maintain); + String tempHFields = getTempFields(character, tableName, Constant.H, maintain); if (StringUtils.isEmpty(whereSegment)) { whereSegment = Constant.WHERE_DEFAULT; } @@ -200,9 +200,9 @@ } @Override - public String getFields(TUser user, String tableName, Maintain maintain) { + public String getFields(Character character, String tableName, Maintain maintain) { - return getFields(user, tableName, null, maintain); + return getFields(character, tableName, null, maintain); } private String getCaseWhenFields(String tableName) { @@ -239,12 +239,12 @@ } @Override - public String getFields(TUser user, String tableName, String alias, Maintain maintain) { + public String getFields(Character character, String tableName, String alias, Maintain maintain) { List<SysField> fields; - if (user == null) { + if (character == null) { fields = fieldService.getFieldByMaintain(maintain.getId()); }else { - fields = masterAuthorService.getField(user.getUserId(), maintain.getId()); + fields = masterAuthorService.getField(character, maintain.getId()); } ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA); if (fields == null) { @@ -272,16 +272,16 @@ } @Override - public String getTempFields(TUser user, String tableName, Maintain maintain) { - return getTempFields(user, tableName, null, maintain); + public String getTempFields(Character character, String tableName, Maintain maintain) { + return getTempFields(character, tableName, null, maintain); } @Override - public String getTempFields(TUser user, String tableName) { - return getTempFields(user, tableName, Constant.EMPTY_Str); + public String getTempFields(Character character, String tableName) { + return getTempFields(character, tableName, Constant.EMPTY_Str); } @Override - public String getTempFields(TUser user, String tableName, String alias) { + public String getTempFields(Character character, String tableName, String alias) { List<TableSchemaResult> tableField = mapper.getTableField(tableName); ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA); @@ -305,12 +305,12 @@ } @Override - public String getTempFields(TUser user, String tableName, String alias, Maintain maintain) { + public String getTempFields(Character character, String tableName, String alias, Maintain maintain) { List<SysField> fields; - if (user == null) { + if (character == null) { fields = fieldService.getFieldByMaintain(maintain.getId()); }else { - fields = masterAuthorService.getField(user.getUserId(), maintain.getId()); + fields = masterAuthorService.getField(character, maintain.getId()); } if (fields == null) { return Constant.EMPTY_Str; @@ -340,45 +340,45 @@ } @Override - public Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, Integer pageSize, boolean findMax) { - return selectListByPageByVersion(user, tableName,Constant.WHERE_DEFAULT,pageNo,pageSize, findMax); + public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, Integer pageSize, boolean findMax) { + return selectListByPageByVersion(character, tableName,Constant.WHERE_DEFAULT,pageNo,pageSize, findMax); } @Override - public Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageNo, boolean findMax) { - return selectListByPageByVersion(user, tableName,null, whereSegment,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); + public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, boolean findMax) { + return selectListByPageByVersion(character, tableName,null, whereSegment,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); } @Override - public Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, String version, boolean findMax) { - return selectListByPageByVersion(user, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, version, findMax); + public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, String version, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, version, findMax); } @Override - public Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, boolean findMax) { - return selectListByPageByVersion(user, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); + public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); } @Override - public Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) { - return selectListByPageByVersion(user, tableName,null,whereSegment,pageNo,pageSize, findMax); + public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,whereSegment,pageNo,pageSize, findMax); } @Override - public Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax) { - return selectListByPageByVersion(user, tableName,null,whereSegment,pageNo, null, findMax); + public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,whereSegment,pageNo, null, findMax); } @Override - public Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, Integer pageNo, boolean findMax) { - return selectListByPageByVersion(user, tableName,null,Constant.WHERE_DEFAULT,pageNo, findMax); + public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, Integer pageNo, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, findMax); } @Override - public Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageNo, String version, boolean findMax) { - return selectListByPageByVersion(user, tableName, null,whereSegment, pageNo, null,version, findMax); + public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, String version, boolean findMax) { + return selectListByPageByVersion(character, tableName, null,whereSegment, pageNo, null,version, findMax); } @Override - public List<Map<String, Object>> selectListByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) { + public List<Map<String, Object>> selectListByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) { Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); Maintain nowVersionMaintain = maintainService.getNowVersion(tableName); boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId()); @@ -402,12 +402,12 @@ String tempHfields; if (fieldList == null || fieldList.size() == 0) { - fields = getFields(user, tableName, maintainFromVersion); - Hfields = getFields(user, tableName,Constant.H, maintainFromVersion); - A1fields = getFields(user, tableName,Constant.A1, maintainFromVersion); - A2fields = getFields(user, tableName,Constant.A2, maintainFromVersion); - tempFields = getTempFields(user, tableName, maintainFromVersion); - tempHfields = getTempFields(user, tableName, Constant.H, maintainFromVersion); + fields = getFields(character, tableName, maintainFromVersion); + Hfields = getFields(character, tableName,Constant.H, maintainFromVersion); + A1fields = getFields(character, tableName,Constant.A1, maintainFromVersion); + A2fields = getFields(character, tableName,Constant.A2, maintainFromVersion); + tempFields = getTempFields(character, tableName, maintainFromVersion); + tempHfields = getTempFields(character, tableName, Constant.H, maintainFromVersion); } else { fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); Hfields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.H, s)).collect(Collectors.joining(Constant.COMMA)); @@ -445,8 +445,109 @@ return result; } + @Override - public Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax) { + public String selectByVersionSql(Character character, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) { + Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); + Maintain nowVersionMaintain = maintainService.getNowVersion(tableName); + boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId()); + boolean isNow = maintainService.checkNowVersion(maintainFromVersion.getId()); + boolean isFirst = maintainService.checkFirstVersion(maintainFromVersion.getId()); + + Integer fromVersionOrderNo = maintainFromVersion.getOrderNo(); + Integer nowVersionOrderNo = 0; + if (nowVersionMaintain != null) { + nowVersionOrderNo = nowVersionMaintain.getOrderNo(); + } + + String tableTempName = tableName + Constant.RECORD; + String result = null; + + String fields; + String tempFields; + String Hfields; + String A1fields; + String A2fields; + + String tempHfields; + if (fieldList == null || fieldList.size() == 0) { + fields = getFields(null, tableName, maintainFromVersion); + Hfields = getFields(null, tableName,Constant.H, maintainFromVersion); + A1fields = getFields(null, tableName,Constant.A1, maintainFromVersion); + A2fields = getFields(null, tableName,Constant.A2, maintainFromVersion); + tempFields = getTempFields(null, tableName, maintainFromVersion); + tempHfields = getTempFields(null, tableName, Constant.H, maintainFromVersion); + } else { + fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); + Hfields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.H, s)).collect(Collectors.joining(Constant.COMMA)); + A1fields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.A1, s)).collect(Collectors.joining(Constant.COMMA)); + A2fields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.A2, s)).collect(Collectors.joining(Constant.COMMA)); + tempFields = fieldList.stream() + .map(s -> + s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{0} as id",Constant.STD_ID): s) + .collect(Collectors.joining(Constant.COMMA)); + + tempHfields = fieldList.stream() + .map(s -> + s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{0} as id",Constant.STD_ID): s) + .map(s -> MessageFormat.format(Constant.Alias,Constant.H,s)) + .collect(Collectors.joining(Constant.COMMA)); + + } + MyBatisSql ibatisSql = new MyBatisSql(); + Map<String, Object> parameterMap = new HashMap<>(); + if (isNow && !findMax){ + parameterMap.put("tableName", tableName); + parameterMap.put("fields", fields); + parameterMap.put("where", whereSegment); + parameterMap.put("limit", null); + result = DbUtils.getMyBatisSql("selectByPage", parameterMap, sqlSessionFactory).getSql(); + } + else if (isMax && findMax) { + ContentBuilder builder = new ContentBuilder(Constant.COMMA); + if (nowVersionMaintain == null) { + builder.append(DbUtils.quotedStr(maintainFromVersion.getId())); + }else { + List<String> maintainIds = maintainService.getCompareVersionMaintains(nowVersionMaintain, maintainFromVersion); + long con = maintainIds.stream().map(s -> builder.append(DbUtils.quotedStr(s))).count(); + } + parameterMap.put("tableName", tableName); + parameterMap.put("tableTempName", tableTempName); + parameterMap.put("fields", fields); + parameterMap.put("tempFields", tempFields); + parameterMap.put("Hfields", Hfields); + parameterMap.put("A1fields", A1fields); + parameterMap.put("A2fields", A2fields); + parameterMap.put("tempHFields", tempHfields); + parameterMap.put("fromOrderNo", fromVersionOrderNo); + parameterMap.put("toOrderNo", nowVersionOrderNo); + parameterMap.put("maintainId", DbUtils.quotedStr(maintainFromVersion.getId())); + parameterMap.put("where", whereSegment); + parameterMap.put("limit", null); + result = DbUtils.getMyBatisSql("selectByPageByMaxVersion", parameterMap, sqlSessionFactory).getSql(); + + }else { + parameterMap.put("tableName", tableName); + parameterMap.put("tableTempName", tableTempName); + parameterMap.put("fields", fields); + parameterMap.put("tempFields", tempFields); + parameterMap.put("Hfields", Hfields); + parameterMap.put("A1fields", A1fields); + parameterMap.put("A2fields", A2fields); + parameterMap.put("tempHFields", tempHfields); + parameterMap.put("fromOrderNo", fromVersionOrderNo); + parameterMap.put("toOrderNo", nowVersionOrderNo); + parameterMap.put("maintainId", DbUtils.quotedStr(maintainFromVersion.getId())); + parameterMap.put("where", whereSegment); + parameterMap.put("limit", null); + result = DbUtils.getMyBatisSql("selectByPageByVersion", parameterMap, sqlSessionFactory).getSql(); + } + + return result; + } + + @Override + public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax) { Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); Maintain nowVersionMaintain = maintainService.getNowVersion(tableName); boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId()); @@ -470,9 +571,10 @@ if (isFirst && nowVersionMaintain == null) { nowVersionOrderNo = nowVersionOrderNo - 1; } - count = getCountByMaxVersion(user, maintainFromVersion.getId(), tableName, tableTempName, fromVersionOrderNo, nowVersionOrderNo, whereSegment); + + count = getCountByMaxVersion(character, maintainFromVersion.getId(), tableName, tableTempName, fromVersionOrderNo, nowVersionOrderNo, whereSegment); }else { - count = getCountByVersion(user, maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, fromVersionOrderNo, whereSegment); + count = getCountByVersion(character, maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, fromVersionOrderNo, whereSegment); } if (count == 0) { return Result.success(null); @@ -497,12 +599,12 @@ String tempHfields; if (fieldList == null || fieldList.size() == 0) { - fields = getFields(user, tableName, maintainFromVersion); - Hfields = getFields(user, tableName,Constant.H, maintainFromVersion); - A1fields = getFields(user, tableName,Constant.A1, maintainFromVersion); - A2fields = getFields(user, tableName,Constant.A2, maintainFromVersion); - tempFields = getTempFields(user, tableName, maintainFromVersion); - tempHfields = getTempFields(user, tableName, Constant.H, maintainFromVersion); + fields = getFields(character, tableName, maintainFromVersion); + Hfields = getFields(character, tableName,Constant.H, maintainFromVersion); + A1fields = getFields(character, tableName,Constant.A1, maintainFromVersion); + A2fields = getFields(character, tableName,Constant.A2, maintainFromVersion); + tempFields = getTempFields(character, tableName, maintainFromVersion); + tempHfields = getTempFields(character, tableName, Constant.H, maintainFromVersion); } else { fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); Hfields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.H, s)).collect(Collectors.joining(Constant.COMMA)); @@ -550,7 +652,7 @@ JSONObject object = new JSONObject(); object.fluentPut("total", page.getRecordCount()); - object.fluentPut("size", page.getPageSize()); + object.fluentPut("passiveQueueSize", page.getPageSize()); object.fluentPut("pages", page.getPageCount()); object.fluentPut("current", page.getPageNo()); object.fluentPut("record", result); @@ -609,7 +711,7 @@ maintain.setTableName(tableName); maintain.setCreateTime(new Date()); - Connection connection; + Connection connection = null; try { connection = dataSource.getConnection(); connection.setAutoCommit(false); @@ -649,11 +751,18 @@ .setDesp("鎵归噺涓婁紶鏁版嵁"); maintain.insert(); - connection.commit(); } catch (Exception e) { e.printStackTrace(); + }finally { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } } return maintain; @@ -722,7 +831,7 @@ JSONObject object = new JSONObject(); object.fluentPut("total", page.getRecordCount()); - object.fluentPut("size", page.getPageSize()); + object.fluentPut("passiveQueueSize", page.getPageSize()); object.fluentPut("pages", page.getPageCount()); object.fluentPut("current", page.getPageNo()); object.fluentPut("record", result); @@ -733,8 +842,8 @@ } @Override - public Result selectListByPageByVersion(TUser user, String tableName,List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) { - return selectListByPageByVersion(user, tableName, fieldList, whereSegment,pageNo,pageSize,String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); + public Result selectListByPageByVersion(Character character, String tableName,List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) { + return selectListByPageByVersion(character, tableName, fieldList, whereSegment,pageNo,pageSize,String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); } @Override -- Gitblit v1.8.0