@Override public RunResult dataDictionary(GeneratorInstanceDataDictionaryRequest request) { RunResult runResult = new RunResult(); Authentication authentication = request.getAuthentication(); Long userId = authentication.getUserId(); Long id = request.getId(); GeneratorInstance generatorInstance = generatorInstanceRepository.selectById(id); if (generatorInstance == null) { throw new AppException("实例不存在"); } if (!userId.equals(generatorInstance.getUser().getId())) { throw new AppException("权限不足"); } Long generatorId = generatorInstance.getGenerator().getId(); Generator generator = generatorRepository.selectById(generatorId); if (generator == null) { throw new AppException("生成器不存在"); } if (generatorInstance.getVersion() < generator.getVersion()) { throw new AppException("当前生成器已升级发布,请刷新数据,重新操作!"); } if (!generator.getIsOpen() && !generator.getDeveloper().getId().equals(userId)) { throw new AppException("当前生成器正在维护,请暂停操作,等待发布!"); } DynamicModelQueryRequest dynamicModelQueryRequest = new DynamicModelQueryRequest(); dynamicModelQueryRequest.setGeneratorId(generatorId); dynamicModelQueryRequest.setAuthentication(authentication); List<DynamicModel> dynamicModels = dynamicModelService.query(dynamicModelQueryRequest); Map<Long, Map<String, Object>> dynamicModelGroupData = new HashMap<>(); Map<Long, DynamicModel> dynamicModelCache = new HashMap<>(); Map<Long, Map<String, Map<String, Set<String>>>> dynamicModelKeysCache = new HashMap<>(); dynamicModels.forEach( dynamicModel -> { Map<String, Object> groupData = new HashMap<>(); List<Map<String, Object>> fromGroups = new ArrayList<>(); groupData.put("fromGroups", fromGroups); List<Map<String, Object>> headGroups = new ArrayList<>(); groupData.put("headGroups", headGroups); List<DynamicProperty> heads = new ArrayList<>(); groupData.put("heads", heads); DynamicModel newDynamicModel = new DynamicModel(); newDynamicModel.setId(dynamicModel.getId()); newDynamicModel.setName(dynamicModel.getName()); newDynamicModel.setIcon(dynamicModel.getIcon()); Map<String, Map<String, Set<String>>> keysCache = new HashMap<>(); Map<String, Set<String>> propertiesKeys = new HashMap<>(); Set<String> propertiesKeys_dateTypeKeys = new HashSet<>(); Set<String> propertiesKeys_dataModelTypeKeys = new HashSet<>(); propertiesKeys.put("dateTypeKeys", propertiesKeys_dateTypeKeys); propertiesKeys.put("dataModelTypeKeys", propertiesKeys_dataModelTypeKeys); Map<String, Set<String>> associationKeys = new HashMap<>(); Set<String> associationKeys_dateTypeKeys = new HashSet<>(); Set<String> associationKeys_dataModelTypeKeys = new HashSet<>(); associationKeys.put("dateTypeKeys", associationKeys_dateTypeKeys); associationKeys.put("dataModelTypeKeys", associationKeys_dataModelTypeKeys); keysCache.put("propertiesKeys", propertiesKeys); keysCache.put("associationKeys", associationKeys); dynamicModelKeysCache.put(dynamicModel.getId(), keysCache); List<DynamicProperty> properties = dynamicModel.getProperties(); properties.forEach( property -> { if ("Date".equals(property.getType())) { propertiesKeys_dateTypeKeys.add(property.getName()); } else if ("Model".equals(property.getType())) { propertiesKeys_dataModelTypeKeys.add(property.getName()); } DynamicProperty newDynamicProperty = new DynamicProperty(); newDynamicProperty.setId(property.getId()); newDynamicProperty.setLabel(property.getLabel()); newDynamicProperty.setName(property.getName()); newDynamicProperty.setViewWidth(property.getViewWidth()); newDynamicProperty.setType(property.getType()); newDynamicProperty.setDefaultValue(property.getDefaultValue()); newDynamicModel.getProperties().add(newDynamicProperty); String group = property.getGroup(); Map<String, Object> groupMap = new HashMap<>(); if (!StringUtils.hasText(group)) { groupMap.put("property", property); fromGroups.add(groupMap); } else { Map<String, Object> prevFromGroup = fromGroups.isEmpty() ? null : fromGroups.get(fromGroups.size() - 1); String prevGroup = prevFromGroup == null ? null : (prevFromGroup.get("group") == null ? null : prevFromGroup.get("group").toString()); if (prevFromGroup == null || !group.equals(prevGroup)) { groupMap.put("group", group); List<DynamicProperty> children = new ArrayList<>(); children.add(property); groupMap.put("children", children); fromGroups.add(groupMap); } if (prevFromGroup != null && group.equals(prevGroup)) { List<DynamicProperty> children = (List<DynamicProperty>) prevFromGroup.get("children"); children.add(property); } } }); List<DynamicProperty> association = dynamicModel.getAssociation(); association.forEach( property -> { if ("Date".equals(property.getType())) { associationKeys_dateTypeKeys.add(property.getName()); } else if ("Model".equals(property.getType())) { associationKeys_dataModelTypeKeys.add(property.getName()); } DynamicProperty newDynamicProperty = new DynamicProperty(); newDynamicProperty.setId(property.getId()); newDynamicProperty.setLabel(property.getLabel()); newDynamicProperty.setName(property.getName()); newDynamicProperty.setViewWidth(property.getViewWidth()); newDynamicProperty.setType(property.getType()); newDynamicProperty.setDefaultValue(property.getDefaultValue()); newDynamicModel.getAssociation().add(newDynamicProperty); String group = property.getGroup(); Map<String, Object> groupMap = new HashMap<>(); if (!StringUtils.hasText(group)) { groupMap.put("property", property); headGroups.add(groupMap); } else { Map<String, Object> prevHeadGroup = headGroups.isEmpty() ? null : headGroups.get(headGroups.size() - 1); String prevGroup = prevHeadGroup == null ? null : (prevHeadGroup.get("group") == null ? null : prevHeadGroup.get("group").toString()); if (prevHeadGroup == null || !group.equals(prevGroup)) { groupMap.put("group", group); groupMap.put("span", 1); headGroups.add(groupMap); } if (prevHeadGroup != null && group.equals(prevGroup)) { Integer span = (Integer) prevHeadGroup.get("span"); prevHeadGroup.put("span", span + 1); } heads.add(property); } }); dynamicModelCache.put(newDynamicModel.getId(), newDynamicModel); dynamicModelGroupData.put(newDynamicModel.getId(), groupData); }); List<Long> excludeIds = request.getExcludeIds(); Map<Long, Long> excludeIdCache = new HashMap<>(); excludeIds.forEach(excludeId -> excludeIdCache.put(excludeId, excludeId)); Long dataModelId = generatorInstance.getDataModel().getId(); DataModel rootDataModel = dataModelRepository.selectById(dataModelId); Map<Long, DataModel> dataModelSourceCache = new HashMap<>(); Map<Long, DataModel> dataModelTargetCache = new HashMap<>(); LinkedList<DataModel> stack = new LinkedList<>(); stack.push(rootDataModel); while (!stack.isEmpty()) { DataModel dataModel = stack.pop(); dataModelSourceCache.put(dataModel.getId(), dataModel); dataModelTargetCache.put(dataModel.getId(), new DataModel()); dataModel.getChildren().forEach(stack::push); } dataModelSourceCache.forEach( (dataModelSourceId, dataModelSource) -> { DataModel dataModelTarget = dataModelTargetCache.get(dataModelSourceId); dataModelTarget.setId(dataModelSource.getId()); dataModelTarget.setName(dataModelSource.getName()); if (dataModelSource.getParent() != null) { Long parentId = dataModelSource.getParent().getId(); DataModel parentSource = dataModelSourceCache.get(parentId); if (parentSource != null) { DataModel parentTarget = dataModelTargetCache.get(parentId); dataModelTarget.setParent(parentTarget); } } dataModelSource .getChildren() .forEach( child -> { Long childId = child.getId(); if (!excludeIdCache.containsKey(childId)) { dataModelTarget.getChildren().add(dataModelTargetCache.get(childId)); } }); if (!dataModelSource.equals(rootDataModel)) { DynamicModel dynamicModel = dynamicModelCache.get(dataModelSource.getDynamicModel().getId()); dataModelTarget.setDynamicModel(dynamicModel); Map<String, Map<String, Set<String>>> keysCache = dynamicModelKeysCache.get(dynamicModel.getId()); Map<String, Set<String>> propertiesKeys = keysCache.get("propertiesKeys"); Map<String, Set<String>> associationKeys = keysCache.get("associationKeys"); Set<String> propertiesKeys_dateTypeKeys = propertiesKeys.get("dateTypeKeys"); Set<String> propertiesKeys_dataModelTypeKeys = propertiesKeys.get("dataModelTypeKeys"); Set<String> associationKeys_dateTypeKeys = associationKeys.get("dateTypeKeys"); Set<String> associationKeys_dataModelTypeKeys = associationKeys.get("dataModelTypeKeys"); dataModelSource .getProperties() .forEach( (name, value) -> { try { if (propertiesKeys_dateTypeKeys.contains(name)) { dataModelTarget.getProperties().put(name, new Date((Long) value)); } else if (propertiesKeys_dataModelTypeKeys.contains(name)) { dataModelTarget .getProperties() .put(name, dataModelTargetCache.get(value)); } else { dataModelTarget.getProperties().put(name, value); } } catch (Exception e) { // } }); dataModelSource .getAssociation() .forEach( property -> { Map<String, Object> newProperty = new LinkedHashMap<>(); property.forEach( (name, value) -> { try { if (associationKeys_dateTypeKeys.contains(name)) { newProperty.put(name, new Date((Long) value)); } else if (associationKeys_dataModelTypeKeys.contains(name)) { newProperty.put(name, dataModelTargetCache.get(value)); } else { newProperty.put(name, value); } } catch (Exception e) { // } }); dataModelTarget.getAssociation().add(newProperty); }); } }); Long generateId = idWorker.nextId(); ComparisonDateTool comparisonDateTool = new ComparisonDateTool(); Map<String, String> themeIndex = new HashMap<>(); themeIndex.put("cerulean", "cerulean"); themeIndex.put("cosmo", "cosmo"); themeIndex.put("cyborg", "cyborg"); themeIndex.put("darkly", "darkly"); themeIndex.put("default", "default"); themeIndex.put("flatly", "flatly"); themeIndex.put("journal", "journal"); themeIndex.put("lumen", "lumen"); themeIndex.put("paper", "paper"); themeIndex.put("readable", "readable"); themeIndex.put("sandstone", "sandstone"); themeIndex.put("simplex", "simplex"); themeIndex.put("slate", "slate"); themeIndex.put("spacelab", "spacelab"); themeIndex.put("superhero", "superhero"); themeIndex.put("united", "united"); themeIndex.put("yeti", "yeti"); String theme = themeIndex.get(request.getTheme()); theme = theme == null ? "slate" : theme; Global global = new Global(); global.setGenerateId(generateId); global.setTheme(theme); User userClone = new User(); userClone.setId(userId); userClone.setUserName(authentication.getUserName()); global.setUser(userClone); GeneratorInstance generatorInstanceClone = new GeneratorInstance(); generatorInstanceClone.setId(generatorInstance.getId()); generatorInstanceClone.setName(generatorInstance.getName()); global.setGeneratorInstance(generatorInstanceClone); DataModel rootDataModelClone = dataModelTargetCache.get(rootDataModel.getId()); String generatePath = ConfigProperties.TEMPORARY_PATH + ConfigProperties.fileSeparator + userId + ConfigProperties.fileSeparator + generatorInstance.getName() + "(" + generateId + ")"; String indexOutFile = generatePath + ConfigProperties.fileSeparator + "index.html"; Map<String, Object> indexVarMap = new HashMap<>(); indexVarMap.put("global", global); indexVarMap.put("date", comparisonDateTool); indexVarMap.put("data", rootDataModelClone); FileUtil.mkdirs(new File(indexOutFile).getParent()); VelocityUtil.mergeWrite( ConfigProperties.ROOT_PATH + ConfigProperties.fileSeparator + "client/template", "index.html.vm", indexOutFile, indexVarMap); FileUtil.mkdirs(generatePath + ConfigProperties.fileSeparator + "library"); FileUtil.copyFile( new File( ConfigProperties.ROOT_PATH + ConfigProperties.fileSeparator + "client/library/jquery/jquery.min.js"), new File(generatePath + ConfigProperties.fileSeparator + "library/jquery.min.js")); FileUtil.copyFile( new File( ConfigProperties.ROOT_PATH + ConfigProperties.fileSeparator + "client/library/bootstrap/js/bootstrap.min.js"), new File(generatePath + ConfigProperties.fileSeparator + "library/bootstrap.min.js")); FileUtil.copyFile( new File( ConfigProperties.ROOT_PATH + ConfigProperties.fileSeparator + "client/library/angular/angular.min.js"), new File(generatePath + ConfigProperties.fileSeparator + "library/angular.min.js")); FileUtil.copyFile( new File( ConfigProperties.ROOT_PATH + ConfigProperties.fileSeparator + "client/library/bootstrap/theme/" + theme + ".min.css"), new File(generatePath + ConfigProperties.fileSeparator + "library/" + theme + ".min.css")); FileUtil.mkdirs(generatePath + ConfigProperties.fileSeparator + "fonts"); File[] fontFiles = new File( ConfigProperties.ROOT_PATH + ConfigProperties.fileSeparator + "client/library/bootstrap/fonts") .listFiles(); for (File fontFile : fontFiles) { FileUtil.copyFile( new File( ConfigProperties.ROOT_PATH + ConfigProperties.fileSeparator + "client/library/bootstrap/fonts/" + fontFile.getName()), new File(generatePath + ConfigProperties.fileSeparator + "fonts/" + fontFile.getName())); } LinkedList<DataModel> dataStack = new LinkedList<>(); dataStack.push(rootDataModelClone); FileUtil.mkdirs(generatePath + ConfigProperties.fileSeparator + "data"); while (!dataStack.isEmpty()) { DataModel dataModel = dataStack.pop(); if (dataModel != rootDataModelClone) { String dataModelOutFile = generatePath + ConfigProperties.fileSeparator + "data" + ConfigProperties.fileSeparator + dataModel.getId() + ".html"; Map<String, Object> dataModelVarMap = new HashMap<>(); dataModelVarMap.put("global", global); dataModelVarMap.put("date", comparisonDateTool); dataModelVarMap.put("dataModel", dataModel); dataModelVarMap.put("dynamicModelGroupData", dynamicModelGroupData); VelocityUtil.mergeWrite( ConfigProperties.ROOT_PATH + ConfigProperties.fileSeparator + "client/template", "dataModel.html.vm", dataModelOutFile, dataModelVarMap); } dataModel.getChildren().forEach(dataStack::push); } File generateFolder = new File(generatePath); try { ZipUtil.compress(generateFolder); } catch (Exception e) { throw new AppException(e, "压缩文件失败"); } FileUtil.deleteFile(generateFolder); runResult.setUrl(userId + "/" + generatorInstance.getName() + "(" + generateId + ").zip"); runResult.setFileName(generatorInstance.getName() + "(" + generateId + ").zip"); return runResult; }
@Override public RunResult run(GeneratorInstanceRunRequest request) { RunResult runResult = new RunResult(); Authentication authentication = request.getAuthentication(); Long userId = authentication.getUserId(); Long id = request.getId(); GeneratorInstance generatorInstance = generatorInstanceRepository.selectById(id); if (generatorInstance == null) { throw new AppException("实例不存在"); } if (!userId.equals(generatorInstance.getUser().getId())) { throw new AppException("权限不足"); } Long generatorId = generatorInstance.getGenerator().getId(); Generator generator = generatorRepository.selectById(generatorId); if (generator == null) { throw new AppException("生成器不存在"); } if (generatorInstance.getVersion() < generator.getVersion()) { throw new AppException("当前生成器已升级发布,请刷新数据,重新操作!"); } if (!generator.getIsOpen() && !generator.getDeveloper().getId().equals(userId)) { throw new AppException("当前生成器正在维护,请暂停操作,等待发布!"); } Long templateStrategyId = request.getTemplateStrategyId(); TemplateStrategy templateStrategy = templateStrategyRepository.selectById(templateStrategyId); DynamicModelQueryRequest dynamicModelQueryRequest = new DynamicModelQueryRequest(); dynamicModelQueryRequest.setGeneratorId(generatorId); dynamicModelQueryRequest.setAuthentication(authentication); List<DynamicModel> dynamicModels = dynamicModelService.query(dynamicModelQueryRequest); Map<Long, DynamicModel> dynamicModelCache = new HashMap<>(); Map<Long, Map<String, Map<String, Set<String>>>> dynamicModelKeysCache = new HashMap<>(); dynamicModels.forEach( dynamicModel -> { DynamicModel newDynamicModel = new DynamicModel(); newDynamicModel.setId(dynamicModel.getId()); newDynamicModel.setName(dynamicModel.getName()); newDynamicModel.setIcon(dynamicModel.getIcon()); Map<String, Map<String, Set<String>>> keysCache = new HashMap<>(); Map<String, Set<String>> propertiesKeys = new HashMap<>(); Set<String> propertiesKeys_dateTypeKeys = new HashSet<>(); Set<String> propertiesKeys_dataModelTypeKeys = new HashSet<>(); propertiesKeys.put("dateTypeKeys", propertiesKeys_dateTypeKeys); propertiesKeys.put("dataModelTypeKeys", propertiesKeys_dataModelTypeKeys); Map<String, Set<String>> associationKeys = new HashMap<>(); Set<String> associationKeys_dateTypeKeys = new HashSet<>(); Set<String> associationKeys_dataModelTypeKeys = new HashSet<>(); associationKeys.put("dateTypeKeys", associationKeys_dateTypeKeys); associationKeys.put("dataModelTypeKeys", associationKeys_dataModelTypeKeys); keysCache.put("propertiesKeys", propertiesKeys); keysCache.put("associationKeys", associationKeys); dynamicModelKeysCache.put(dynamicModel.getId(), keysCache); List<DynamicProperty> properties = dynamicModel.getProperties(); properties.forEach( property -> { if ("Date".equals(property.getType())) { propertiesKeys_dateTypeKeys.add(property.getName()); } else if ("Model".equals(property.getType())) { propertiesKeys_dataModelTypeKeys.add(property.getName()); } DynamicProperty newDynamicProperty = new DynamicProperty(); newDynamicProperty.setId(property.getId()); newDynamicProperty.setLabel(property.getLabel()); newDynamicProperty.setName(property.getName()); newDynamicProperty.setViewWidth(property.getViewWidth()); newDynamicProperty.setType(property.getType()); newDynamicProperty.setDefaultValue(property.getDefaultValue()); newDynamicModel.getProperties().add(newDynamicProperty); }); List<DynamicProperty> association = dynamicModel.getAssociation(); association.forEach( property -> { if ("Date".equals(property.getType())) { associationKeys_dateTypeKeys.add(property.getName()); } else if ("Model".equals(property.getType())) { associationKeys_dataModelTypeKeys.add(property.getName()); } DynamicProperty newDynamicProperty = new DynamicProperty(); newDynamicProperty.setId(property.getId()); newDynamicProperty.setLabel(property.getLabel()); newDynamicProperty.setName(property.getName()); newDynamicProperty.setViewWidth(property.getViewWidth()); newDynamicProperty.setType(property.getType()); newDynamicProperty.setDefaultValue(property.getDefaultValue()); newDynamicModel.getAssociation().add(newDynamicProperty); }); dynamicModelCache.put(newDynamicModel.getId(), newDynamicModel); }); List<Long> excludeIds = request.getExcludeIds(); Map<Long, Long> excludeIdCache = new HashMap<>(); excludeIds.forEach(excludeId -> excludeIdCache.put(excludeId, excludeId)); Long dataModelId = generatorInstance.getDataModel().getId(); DataModel rootDataModel = dataModelRepository.selectById(dataModelId); Map<Long, DataModel> dataModelSourceCache = new HashMap<>(); Map<Long, DataModel> dataModelTargetCache = new HashMap<>(); LinkedList<DataModel> stack = new LinkedList<>(); stack.push(rootDataModel); while (!stack.isEmpty()) { DataModel dataModel = stack.pop(); dataModelSourceCache.put(dataModel.getId(), dataModel); dataModelTargetCache.put(dataModel.getId(), new DataModel()); dataModel.getChildren().forEach(stack::push); } dataModelSourceCache.forEach( (dataModelSourceId, dataModelSource) -> { DataModel dataModelTarget = dataModelTargetCache.get(dataModelSourceId); dataModelTarget.setId(dataModelSource.getId()); dataModelTarget.setName(dataModelSource.getName()); if (dataModelSource.getParent() != null) { Long parentId = dataModelSource.getParent().getId(); DataModel parentSource = dataModelSourceCache.get(parentId); if (parentSource != null) { DataModel parentTarget = dataModelTargetCache.get(parentId); dataModelTarget.setParent(parentTarget); } } dataModelSource .getChildren() .forEach( child -> { Long childId = child.getId(); if (!excludeIdCache.containsKey(childId)) { dataModelTarget.getChildren().add(dataModelTargetCache.get(childId)); } }); if (!dataModelSource.equals(rootDataModel)) { DynamicModel dynamicModel = dynamicModelCache.get(dataModelSource.getDynamicModel().getId()); dataModelTarget.setDynamicModel(dynamicModel); Map<String, Map<String, Set<String>>> keysCache = dynamicModelKeysCache.get(dynamicModel.getId()); Map<String, Set<String>> propertiesKeys = keysCache.get("propertiesKeys"); Map<String, Set<String>> associationKeys = keysCache.get("associationKeys"); Set<String> propertiesKeys_dateTypeKeys = propertiesKeys.get("dateTypeKeys"); Set<String> propertiesKeys_dataModelTypeKeys = propertiesKeys.get("dataModelTypeKeys"); Set<String> associationKeys_dateTypeKeys = associationKeys.get("dateTypeKeys"); Set<String> associationKeys_dataModelTypeKeys = associationKeys.get("dataModelTypeKeys"); dataModelSource .getProperties() .forEach( (name, value) -> { try { if (propertiesKeys_dateTypeKeys.contains(name)) { dataModelTarget.getProperties().put(name, new Date((Long) value)); } else if (propertiesKeys_dataModelTypeKeys.contains(name)) { dataModelTarget .getProperties() .put(name, dataModelTargetCache.get(value)); } else { dataModelTarget.getProperties().put(name, value); } } catch (Exception e) { // } }); dataModelSource .getAssociation() .forEach( property -> { Map<String, Object> newProperty = new LinkedHashMap<>(); property.forEach( (name, value) -> { try { if (associationKeys_dateTypeKeys.contains(name)) { newProperty.put(name, new Date((Long) value)); } else if (associationKeys_dataModelTypeKeys.contains(name)) { newProperty.put(name, dataModelTargetCache.get(value)); } else { newProperty.put(name, value); } } catch (Exception e) { // } }); dataModelTarget.getAssociation().add(newProperty); }); } }); Template templateTemplate = new Template(); templateTemplate.setIsDelete(false); templateTemplate.setGenerator(generator); List<Template> templates = templateRepository.selectList(templateTemplate); Map<Long, Template> templateCache = new HashMap<>(); templates.forEach( template -> { Template newTemplate = new Template(); newTemplate.setId(template.getId()); newTemplate.setName(template.getName()); newTemplate.setUrl(template.getUrl()); templateCache.put(template.getId(), newTemplate); }); Long generateId = idWorker.nextId(); User developer = userRepository.selectById(generator.getDeveloper().getId()); TemplateStrategy templateStrategyClone = templateStrategy.clone(); Global global = new Global(); global.setGenerateId(generateId); global.setTemplateCache(templateCache); User userClone = new User(); userClone.setId(userId); userClone.setUserName(authentication.getUserName()); global.setUser(userClone); Generator generatorClone = new Generator(); generatorClone.setId(generator.getId()); generatorClone.setName(generator.getName()); global.setGenerator(generatorClone); GeneratorInstance generatorInstanceClone = new GeneratorInstance(); generatorInstanceClone.setId(generatorInstance.getId()); generatorInstanceClone.setName(generatorInstance.getName()); global.setGeneratorInstance(generatorInstanceClone); User developerClone = new User(); developerClone.setId(developer.getId()); developerClone.setUserName(developer.getUserName()); global.setDeveloper(developerClone); global.setTemplateStrategy(templateStrategyClone); Context context = new Context(); context.setVariable("global", global); context.setVariable("data", dataModelTargetCache.get(rootDataModel.getId())); try { templateStrategyClone.execute(context); } catch (Throwable e) { List<String> messages = new ArrayList<>(); LinkedList<Throwable> exceptionStack = new LinkedList<>(); exceptionStack.push(e); while (!exceptionStack.isEmpty()) { Throwable exception = exceptionStack.pop(); messages.add(exception.toString()); if (exception.getCause() != null) { exceptionStack.push(exception.getCause()); } } runResult.setMessages(messages); return runResult; } String generatePath = ConfigProperties.TEMPORARY_PATH + ConfigProperties.fileSeparator + userId + ConfigProperties.fileSeparator + generatorInstance.getName() + "(" + generateId + ")"; FileUtil.mkdirs(generatePath); File generateFolder = new File(generatePath); try { ZipUtil.compress(generateFolder); } catch (Exception e) { throw new AppException(e, "压缩文件失败"); } FileUtil.deleteFile(generateFolder); runResult.setUrl(userId + "/" + generatorInstance.getName() + "(" + generateId + ").zip"); runResult.setFileName(generatorInstance.getName() + "(" + generateId + ").zip"); return runResult; }
public void loadDataTest(String path) { testUsers = new LinkedList<User>(); User user = null; TreeMap<Integer, Integer> track_rating = null; List<Integer> tracksInTest = null; List<String> data = loadData(path); for (String str : data) { if (str.contains("|")) { if (track_rating != null) { user.setTracks(track_rating); user.setTracksInTest(tracksInTest); testUsers.add(user); } user = new User(); track_rating = new TreeMap<Integer, Integer>(); tracksInTest = new LinkedList<Integer>(); String[] strArray = str.split("\\|"); user.setId(Integer.parseInt(strArray[0])); } else { track_rating.put(Integer.parseInt(str), 0); // Initialize the rating 0 tracksInTest.add(Integer.parseInt(str)); } } user.setTracks(track_rating); user.setTracksInTest(tracksInTest); testUsers.add(user); }
public PagedResult<User> readUsers(String source) throws ReviewboardException { try { JSONObject rootObject = checkedGetJSonRootObject(source); int totalResults = rootObject.getInt("total_results"); JSONArray jsonUsers = rootObject.getJSONArray("users"); List<User> users = new ArrayList<User>(); for (int i = 0; i < jsonUsers.length(); i++) { JSONObject jsonUser = jsonUsers.getJSONObject(i); User user = new User(); user.setId(jsonUser.getInt("id")); user.setUrl(jsonUser.getString("url")); user.setUsername(jsonUser.getString("username")); // some fields are not set for private profiles user.setEmail(jsonUser.has("email") ? jsonUser.getString("email") : ""); user.setFirstName(jsonUser.has("first_name") ? jsonUser.getString("first_name") : ""); user.setLastName(jsonUser.has("last_name") ? jsonUser.getString("last_name") : ""); users.add(user); } return PagedResult.create(users, totalResults); } catch (JSONException e) { throw new ReviewboardException(e.getMessage(), e); } }
@Override public GeneratorInstance create(GeneratorInstanceCreateRequest request) { Long userId = request.getAuthentication().getUserId(); Long generatorId = request.getGeneratorId(); Generator generatorPersistence = generatorRepository.selectById(generatorId); if (generatorPersistence == null) { throw new AppException("生成器不存在"); } if (!generatorPersistence.getIsApplied() && !generatorPersistence.getDeveloper().getId().equals(userId)) { generatorPersistence.setIsApplied(true); } generatorPersistence.setInstanceCount(generatorPersistence.getInstanceCount() + 1); generatorRepository.update(generatorPersistence); GeneratorInstance generatorInstance = new GeneratorInstance(); generatorInstance.setId(idWorker.nextId()); generatorInstance.setName(request.getName()); generatorInstance.setCreateDate(new Date()); generatorInstance.setModifyDate(new Date()); generatorInstance.setIsDelete(false); Generator generator = new Generator(); generator.setId(generatorPersistence.getId()); generatorInstance.setGenerator(generator); User user = new User(); user.setId(userId); generatorInstance.setUser(user); generatorInstance.setVersion(generatorPersistence.getVersion()); DataModel dataModel = new DataModel(); dataModel.setId(idWorker.nextId()); dataModel.setCreateDate(new Date()); dataModel.setModifyDate(new Date()); dataModel.setIsDelete(false); GeneratorInstance g = new GeneratorInstance(); g.setId(generatorInstance.getId()); dataModel.setGeneratorInstance(g); generator.setId(generatorPersistence.getId()); dataModel.setGenerator(generator); dataModel.setUser(user); dataModelRepository.insert(dataModel); DataModel dm = new DataModel(); dm.setId(dataModel.getId()); generatorInstance.setDataModel(dm); generatorInstanceRepository.insert(generatorInstance); return generatorInstance; }
public void loadDataTrain(String path) { trainUsers = new HashMap<Integer, User>(); User user = null; TreeMap<Integer, Integer> track_rating = null; Map<Integer, Integer> album_rating = null; Map<Integer, Integer> artist_rating = null; Map<Integer, Integer> genre_rating = null; List<String> data = loadData(path); for (String str : data) { if (str.contains("|")) { if (track_rating != null) { user.setTracks(track_rating); user.setAlbums(album_rating); user.setArtists(artist_rating); user.setGeners(genre_rating); trainUsers.put(user.getId(), user); } user = new User(); track_rating = new TreeMap<Integer, Integer>(); album_rating = new HashMap<Integer, Integer>(); artist_rating = new HashMap<Integer, Integer>(); genre_rating = new HashMap<Integer, Integer>(); String[] strArray = str.split("\\|"); user.setId(Integer.parseInt(strArray[0])); } else { String[] trackRating = str.split("\t"); int id = Integer.parseInt(trackRating[0]); int rating = Integer.parseInt(trackRating[1]); if (allAlbums.containsKey(id)) { album_rating.put(id, rating); } else if (allArtists.containsKey(id)) { artist_rating.put(id, rating); } else if (allGenres.containsKey(id)) { genre_rating.put(id, rating); } else { track_rating.put(Integer.parseInt(trackRating[0]), rating); } } } }
Base1() throws GoraException, NoSuchAlgorithmException { final ByteBuffer b0 = ByteBuffer.wrap("0".getBytes()); b0.mark(); e0 = new com.kareebo.contacts.thrift.EncryptionKey( b0, com.kareebo.contacts.thrift.EncryptionAlgorithm.RSA2048); final User user0 = userDatastore.get(clientId.getUser()); final Map<CharSequence, Client> clients0 = user0.getClients(); clients0.values().iterator().next().getKeys().setEncryption(TypeConverter.convert(e0)); final ByteBuffer b1 = ByteBuffer.wrap("1".getBytes()); b1.mark(); e1 = new com.kareebo.contacts.thrift.EncryptionKey( b1, com.kareebo.contacts.thrift.EncryptionAlgorithm.RSA2048); final Client client01 = createClient(clientId01, verificationKey); client01.getKeys().setEncryption(TypeConverter.convert(e1)); clients0.put(TypeConverter.convert(clientId01.getClient()), client01); user0.setClients(clients0); final Client client10 = createClient(clientId10, verificationKey); final Client client11 = createClient(clientId11, verificationKey); final User user1 = new User(); user1.setBlind(b0); final Map<CharSequence, Client> clients1 = new HashMap<>(2); clients1.put(TypeConverter.convert(clientId10.getClient()), client10); clients1.put(TypeConverter.convert(clientId11.getClient()), client11); user1.setClients(clients1); user1.setIdentities(new ArrayList<>()); user1.setSentRequests(new ArrayList<>()); user1.setId(clientId10.getUser()); userDatastore.put(clientId.getUser(), user0); userDatastore.put(clientId10.getUser(), user1); final HashIdentity hashIdentity = new HashIdentity(); hashIdentity.setHash(b0); final HashIdentityValue hashIdentityValue = new HashIdentityValue(); hashIdentityValue.setConfirmers(new ArrayList<>()); hashIdentityValue.setId(clientId10.getUser()); hashIdentity.setHashIdentity(hashIdentityValue); u.setAlgorithm(HashAlgorithm.SHA256); u.setBuffer(b0); identityDataStore.put(b0, hashIdentity); }
Base() throws GoraException { userDatastore = DataStoreFactory.getDataStore(Long.class, User.class, new Configuration()); notifier = new Notifier(); pendingNotificationDataStore = DataStoreFactory.getDataStore(Long.class, PendingNotification.class, new Configuration()); clientNotifier = new ClientNotifier(notifier, pendingNotificationDataStore); identityDataStore = DataStoreFactory.getDataStore(ByteBuffer.class, HashIdentity.class, new Configuration()); sendContactCard = new SendContactCard(userDatastore, identityDataStore, clientNotifier); final User user = new User(); final ByteBuffer b = ByteBuffer.wrap("".getBytes()); b.mark(); user.setBlind(b); user.setId(clientId.getUser()); user.setIdentities(new ArrayList<>()); user.setSentRequests(new ArrayList<>()); final Map<CharSequence, Client> clients = new HashMap<>(1); clients.put( TypeConverter.convert(clientId.getClient()), createClient(clientId, verificationKey)); user.setClients(clients); userDatastore.put(user.getId(), user); }
Base3() throws GoraException, TException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException, SignatureException { final User user = new User(); user.setId(userId); final ByteBuffer b = ByteBuffer.wrap("".getBytes()); b.mark(); user.setBlind(b); user.setIdentities(new ArrayList<>()); user.setSentRequests(new ArrayList<>()); final Map<CharSequence, Client> clients = new HashMap<>(2); final VerificationKey verificationKey = new VerificationKey(); verificationKey.setAlgorithm(com.kareebo.contacts.server.gora.SignatureAlgorithm.Fake); verificationKey.setBuffer(b); clients.put( TypeConverter.convert(clientId0.getClient()), createClient(clientId0, verificationKey)); clients.put( TypeConverter.convert(clientId1.getClient()), createClient(clientId1, verificationKey)); user.setClients(clients); userDatastore.put(userId, user); final com.kareebo.contacts.thrift.EncryptedBuffer encryptedBuffer0 = new com.kareebo.contacts.thrift.EncryptedBuffer( b, com.kareebo.contacts.thrift.EncryptionAlgorithm.Fake, clientId0); final EncryptedBufferSigned encryptedBufferSigned0 = new EncryptedBufferSigned(encryptedBuffer0, sign(encryptedBuffer0, clientId)); encryptedBufferSignedSet.add(encryptedBufferSigned0); e0 = new EncryptedBufferSignedWithVerificationKey( encryptedBufferSigned0, TypeConverter.convert(this.verificationKey)); final com.kareebo.contacts.thrift.EncryptedBuffer encryptedBuffer1 = new com.kareebo.contacts.thrift.EncryptedBuffer( b, com.kareebo.contacts.thrift.EncryptionAlgorithm.Fake, clientId1); final EncryptedBufferSigned encryptedBufferSigned1 = new EncryptedBufferSigned(encryptedBuffer1, sign(encryptedBuffer1, clientId)); encryptedBufferSignedSet.add(encryptedBufferSigned1); e1 = new EncryptedBufferSignedWithVerificationKey( encryptedBufferSigned1, TypeConverter.convert(this.verificationKey)); }