@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; }
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; DataModel model = listData.get(position); if (convertView == null) { convertView = View.inflate(getActivity(), R.layout.item_message_fragment_order_message, null); holder = new ViewHolder(convertView); } holder = (ViewHolder) convertView.getTag(); int state = model.state, refund_state = model.refund_state; if (state == 9 && refund_state == 9) { model.result = "退款申请已处理."; } else if (state == 9 && refund_state != 9) { model.result = "订单已支付"; } else if (state == 0) { model.result = "订单已关闭"; } else if (state == 1) { model.result = "订单未支付"; } holder.tv_result.setText(model.result); holder.tv_ordernum.setText( String.format(getResources().getString(R.string.order_message_ordernum), model.order_id)); return convertView; }
/** * Processes an equals() request against the SCO's run-time data. * * @param iRequest The request (<code>DMRequest</code>) being processed. * @return A data model error code indicating the result of this operation. */ public int equals(DMRequest iRequest) { // Assume no processing errors int result = DMErrorCodes.NO_ERROR; // Make sure there is a request to process and some data model to // process it on if (iRequest != null && mDataModels != null) { RequestToken tok = iRequest.getNextToken(); // The first request token must be a data model token if (tok.getType() == RequestToken.TOKEN_DATA_MODEL) { DataModel dm = (DataModel) mDataModels.get(tok.getValue()); // Make sure the data model exists if (dm != null) { // Process this request result = dm.equals(iRequest); } else { // Specified data model element does not exist result = DMErrorCodes.UNDEFINED_ELEMENT; } } else { // No data model specified result = DMErrorCodes.INVALID_REQUEST; } } else { // Nothing to process or nothing to process on result = DMErrorCodes.UNKNOWN_EXCEPTION; } return result; }
/** * Constructs a wrapper for the given DataWrapper. The DatWrapper must contain a DataSet that is * either a DataSet or a DataSet or a DataList containing either a DataSet or a DataSet as its * selected model. * * @param knowledgeBoxModel */ public AbstractAlgorithmRunner( DataWrapper dataWrapper, Parameters params, KnowledgeBoxModel knowledgeBoxModel, IndependenceFactsModel facts) { if (dataWrapper == null) { throw new NullPointerException(); } if (params == null) { throw new NullPointerException(); } this.params = params; this.sourceGraph = dataWrapper.getSourceGraph(); DataModel dataSource = getSelectedDataModel(dataWrapper); this.dataWrapper = dataWrapper; // temporary workaround to get the knowledge box to coexist with the dataWrapper's knowledge if (knowledgeBoxModel == null) { getParams().set("knowledge", dataWrapper.getKnowledge()); } else { getParams().set("knowledge", knowledgeBoxModel.getKnowledge()); } getParams().set("independenceFacts", facts.getFacts()); List names = dataSource.getVariableNames(); transferVarNamesToParams(names); }
/** Stringifies the association. */ public String toString(int maxGab, boolean useDisplayName) { RestrictionModel restrictionModel = dataModel.getRestrictionModel(); String restriction = ""; if (restrictionModel != null) { String r = restrictionModel.getRestriction(this); if (r != null && r != RestrictionModel.IGNORE) { restriction = " restricted by " + r.replace('\n', ' ').replace('\r', ' '); } } String gap = ""; String aName = useDisplayName ? dataModel.getDisplayName(destination) : destination.getName(); if (name != null) { aName += " (" + name + ")"; } while ((aName + gap).length() < maxGab) { gap += " "; } String jc = joinCondition; String r = restriction; if (reversed) { jc = SqlUtil.reversRestrictionCondition(jc); r = SqlUtil.reversRestrictionCondition(r); } String card = " "; if (cardinality != null) { card = cardinality.toString(); } return aName + gap + " " + card + " on " + jc + r; }
/** Terminates all data models being managed for this SCO. */ public void terminate() { if (mDataModels != null) { Enumeration theEnum = mDataModels.elements(); while (theEnum.hasMoreElements()) { DataModel dm = (DataModel) theEnum.nextElement(); dm.terminate(); } } }
/** * Gets the restricted join-condition for joining source with destination table. * * @return the restricted join-condition for joining source with destination table, <code>null * </code> if association must be ignored */ public String getJoinCondition() { if (dataModel.getRestrictionModel() != null) { String restriction = dataModel.getRestrictionModel().getRestriction(this); if (restriction != null) { if (restriction == RestrictionModel.IGNORE) { return null; } return "(" + joinCondition + ") and " + restriction; } } return joinCondition; }
public void doOperate(DataChangeRequest request) { switch (request.operateCode) { case SET: dataModel.setRating(request.userID, request.itemID, request.rating); break; case REMOVE: dataModel.removeRating(request.userID, request.itemID); break; case GET: request.rating = dataModel.getRating(request.userID, request.itemID); break; } }
public void addFeedProperty(DataModel model, String propertyName, long itemTimestamp) { @SuppressWarnings("unchecked") DMClassHolder<K, T> classHolder = (DMClassHolder<K, T>) model.getClassHolder(clazz); int propertyIndex = classHolder.getPropertyIndex(propertyName); if (propertyIndex < 0) throw new RuntimeException( "Class " + classHolder.getDMOClass().getName() + " has no property " + propertyName); addProperty(propertyIndex); DMPropertyHolder<K, T, ?> property = classHolder.getProperty(propertyIndex); if (!(property instanceof FeedPropertyHolder)) throw new RuntimeException("session.feedChanged() for a non-feed-valued property"); int feedPropertyIndex = classHolder.getFeedPropertyIndex(property.getName()); if (feedTimestamps == null) { feedTimestamps = new long[classHolder.getFeedPropertiesCount()]; for (int i = 0; i < feedTimestamps.length; i++) feedTimestamps[i] = Long.MAX_VALUE; } if (feedTimestamps[feedPropertyIndex] > itemTimestamp) feedTimestamps[feedPropertyIndex] = itemTimestamp; }
@Override protected void doHandler() { listData = new ArrayList<DataModel>(); String[] strs = {"学习天天向上智力时时下降", "凌晨一点写东东"}; String[] times = {"昨天", "7月1日"}; String content = "今天,去了蜜桃酒吧,很不错的酒吧啊今天,去了蜜桃酒吧,很不错的酒吧啊今天,去了蜜桃酒吧,很不错的酒吧啊"; for (int i = 0, len = strs.length; i < len; i++) { String str = strs[i]; DataModel m = new DataModel(); m.username = str; m.content = content; m.time = times[i]; listData.add(m); } adapter = new EntityAdapter(); mListView.setAdapter(adapter); }
/** * Adds the identified data model to the set of run-time data models managed for this SCO. First * checks the current set of managed data models to ensure that the data model to be added is not * aready present in the Hashtable. * * @param iModel Describes the run-time data model to be added. */ public void addDM(int iModel) { // Create the indicated data model DataModel dm = DMFactory.createDM(iModel); if (dm != null) { // Make sure this data model isn't already being managed if (mDataModels == null) { mDataModels = new Hashtable(); mDataModels.put(dm.getDMBindingString(), dm); } else { DataModel check = (DataModel) mDataModels.get(dm.getDMBindingString()); if (check == null) { mDataModels.put(dm.getDMBindingString(), dm); } } } }
/** Whether there is any restriction of this association. */ public boolean isRestricted() { RestrictionModel restrictionModel = dataModel.getRestrictionModel(); String restriction = ""; if (restrictionModel != null) { restriction = restrictionModel.getRestriction(this); if (restriction != null) { return true; } } return false; }
public AbstractAlgorithmRunner( IndependenceFactsModel model, Parameters params, KnowledgeBoxModel knowledgeBoxModel) { if (model == null) { throw new NullPointerException(); } if (params == null) { throw new NullPointerException(); } this.params = params; DataModel dataSource = model.getFacts(); if (knowledgeBoxModel != null) { getParams().set("knowledge", knowledgeBoxModel.getKnowledge()); } List names = dataSource.getVariableNames(); transferVarNamesToParams(names); this.dataModel = dataSource; }
public AbstractAlgorithmRunner(DataWrapper dataWrapper, Parameters params) { if (dataWrapper == null) { throw new NullPointerException(); } if (params == null) { throw new NullPointerException(); } this.params = params; this.sourceGraph = dataWrapper.getSourceGraph(); DataModel dataSource = getSelectedDataModel(dataWrapper); // if (dataSource instanceof ColtDataSet) { // dataSource = new ColtDataSet((ColtDataSet) dataSource); // } this.dataWrapper = dataWrapper; List names = dataSource.getVariableNames(); transferVarNamesToParams(names); }
public void invalidate(DataModel model, long timestamp) { @SuppressWarnings("unchecked") DMClassHolder<K, T> classHolder = (DMClassHolder<K, T>) model.getClassHolder(clazz); long v = propertyMask; int propertyIndex = 0; while (v != 0) { if ((v & 1) != 0) { DMPropertyHolder<K, T, ?> property = classHolder.getProperty(propertyIndex); if (property instanceof FeedPropertyHolder) { int feedPropertyIndex = classHolder.getFeedPropertyIndex(property.getName()); model .getStore() .invalidateFeed( classHolder, key, propertyIndex, timestamp, feedTimestamps[feedPropertyIndex]); logger.debug( "Invalidated {}#{}.{}, feedTimestamp={}", new Object[] { classHolder.getDMOClass().getSimpleName(), key, property.getName(), feedTimestamps[feedPropertyIndex] }); } else { model.getStore().invalidate(classHolder, key, propertyIndex, timestamp); logger.debug( "Invalidated {}#{}.{}", new Object[] {classHolder.getDMOClass().getSimpleName(), key, property.getName()}); } } propertyIndex++; v >>= 1; } }
public static void generateFileChanges(DataModel model) { CreatedModifiedFiles fileChanges = new CreatedModifiedFiles(model.getProject()); NbModuleProvider moduleInfo = model.getModuleInfo(); final String category = model.getCategory(); final String name = model.getName(); final String packageName = model.getPackageName(); HashMap<String, String> replaceTokens = new HashMap<String, String>(); replaceTokens.put("DISPLAYNAME", category); // NOI18N replaceTokens.put("TEMPLATENAME", name); // NOI18N replaceTokens.put("PACKAGENAME", packageName); // NOI18N // Update project dependencies for (int i = 0; i < MODULES.length; i++) { fileChanges.add(fileChanges.addModuleDependency(MODULES[i])); } // Generate action class: String iteratorName = getRelativePath( moduleInfo.getSourceDirectoryPath(), packageName, name, "Action.java"); // NOI18N FileObject template = CreatedModifiedFiles.getTemplate("templateAction.java"); // NOI18N fileChanges.add(fileChanges.createFileWithSubstitutions(iteratorName, template, replaceTokens)); // Layer entry: fileChanges.add( fileChanges.createLayerEntry( "VisualVM/" + "ExplorerPopupSelection/" + packageName.replace(".", "-") + "-" + name + "Action.instance", // NOI18N null, null, "", null)); // Layer attr: fileChanges.add( fileChanges.createLayerAttribute( "VisualVM/" + "ExplorerPopupSelection/" + packageName.replace(".", "-") + "-" + name + "Action.instance", "position", 3000)); model.setCreatedModifiedFiles(fileChanges); }
public void addProperty(DataModel model, String propertyName) { @SuppressWarnings("unchecked") DMClassHolder<K, T> classHolder = (DMClassHolder<K, T>) model.getClassHolder(clazz); int propertyIndex = classHolder.getPropertyIndex(propertyName); if (propertyIndex < 0) throw new RuntimeException( "Class " + classHolder.getDMOClass().getName() + " has no property " + propertyName); DMPropertyHolder<K, T, ?> property = classHolder.getProperty(propertyIndex); if (property instanceof FeedPropertyHolder) throw new RuntimeException("For feed-valued-properties, you must use session.feedChanged()"); addProperty(propertyIndex); }
/** * Stringifies the join condition. * * @param restrictionSeparator separates join-condition from restriction condition in the result */ public String renderJoinCondition(String restrictionSeparator) { RestrictionModel restrictionModel = dataModel.getRestrictionModel(); String restriction = ""; if (restrictionModel != null) { String r = restrictionModel.getRestriction(this); if (r != null && r != RestrictionModel.IGNORE) { restriction = " " + restrictionSeparator + " " + r; } } String jc = joinCondition; String r = restriction; if (reversed) { jc = SqlUtil.reversRestrictionCondition(jc); r = SqlUtil.reversRestrictionCondition(r); } return jc + r; }
/** * Gets restriction-condition. * * @return restriction-condition, <code>null</code> if association is not restricted */ public String getRestrictionCondition() { RestrictionModel restrictionModel = dataModel.getRestrictionModel(); if (restrictionModel != null) { String r = restrictionModel.getRestriction(this); if (r != null) { if (r == RestrictionModel.IGNORE) { return "false"; } if (reversed) { r = SqlUtil.reversRestrictionCondition(r); } if (r.startsWith("(") && r.endsWith(")")) { r = r.substring(1, r.length() - 1); } return r; } } return null; }
/** * Liefert das System-Objekt mit der angegebenen PID zurück. * * @param pid Die permanente ID des System-Objekts * @return Das gewünschte System-Objekt oder <code>null</code>, wenn es kein Objekt mit der * angegebenen PID gibt. * @see de.bsvrz.dav.daf.main.config.DataModel */ public SystemObject getObject(String pid) { if (pid == null || pid.equals("") || pid.equals("null")) return null; SystemObject object = _dataModel.getObject(pid); if (isValid(object)) return object; synchronized (this) { // Sans, STS, KonfigAss: Korrektur _newlyActiveObjects if (_newlyActiveObjects == null) { _newlyActiveObjects = new HashMap<String, SystemObject>(); long startTime = System.currentTimeMillis(); final Map<String, ConfigurationArea> areas = ((ConfigDataModel) _dataModel).getAllConfigurationAreas(); for (ConfigurationArea configurationArea : areas.values()) { final Collection<SystemObject> newObjects = configurationArea.getNewObjects(); for (SystemObject newObject : newObjects) { final String newObjectPid = newObject.getPid(); if (newObjectPid != null && newObjectPid.length() > 0 && isValid(newObject)) { _newlyActiveObjects.put(newObjectPid, newObject); } } _debug.fine( "Zwischenspeicherung von neuerdings aktiven Objekten dauerte in Millisekunden", System.currentTimeMillis() - startTime); } } return _newlyActiveObjects.get(pid); } // final Set<ConfigurationArea> configurationAreas = _configurationAreaVersions.keySet(); // for(ConfigurationArea configurationArea : configurationAreas) { // final Collection<SystemObject> newObjects = configurationArea.getNewObjects(); // for(SystemObject systemObject : newObjects) { // if(systemObject.getPid().equals(pid) && isValid(systemObject)) return systemObject; // } // } // return null; }
/** * Called when the page is ready. */ public static void onPageLoad() throws Exception { DataModel.onPageLoad(); }
/** * Whether or not to insert destination-rows before source-rows in order to prevent * foreign-key-constraint violation. * * @return the insertDestinationBeforeSource */ public boolean isInsertDestinationBeforeSource() { if (dataModel.getRestrictionModel() != null && dataModel.getRestrictionModel().isTransposed()) { return reversalAssociation.insertDestinationBeforeSource; } return insertDestinationBeforeSource; }
public void resolveNotifications(DataModel model, ClientNotificationSet result) { @SuppressWarnings("unchecked") DMClassHolder<K, T> classHolder = (DMClassHolder<K, T>) model.getClassHolder(clazz); model.getStore().resolveNotifications(classHolder, key, propertyMask, result, matcher); }
/** * Gets unique ID. * * @return unique ID */ public int getId() { if (id < 0) { dataModel.assignAssociationIDs(); } return id; }
@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; }
/** * Executes the algorithm, producing (at least) a result workbench. Must be implemented in the * extending class. */ public void execute() { Object source = dataWrapper.getSelectedDataModel(); DataModel dataModel = (DataModel) source; IKnowledge knowledge = params2.getKnowledge(); if (initialGraph == null) { initialGraph = new EdgeListGraph(dataModel.getVariables()); } Graph graph2 = new EdgeListGraph(initialGraph); graph2 = GraphUtils.replaceNodes(graph2, dataModel.getVariables()); Bff search; if (dataModel instanceof DataSet) { DataSet dataSet = (DataSet) dataModel; if (getAlgorithmType() == AlgorithmType.BEAM) { search = new BffBeam(graph2, dataSet, knowledge); } else if (getAlgorithmType() == AlgorithmType.GES) { search = new BffGes(graph2, dataSet); search.setKnowledge(knowledge); } else { throw new IllegalStateException(); } } else if (dataModel instanceof CovarianceMatrix) { CovarianceMatrix covarianceMatrix = (CovarianceMatrix) dataModel; if (getAlgorithmType() == AlgorithmType.BEAM) { search = new BffBeam(graph2, covarianceMatrix, knowledge); } else if (getAlgorithmType() == AlgorithmType.GES) { throw new IllegalArgumentException( "GES method requires a dataset; a covariance matrix was provided."); // search = new BffGes(graph2, covarianceMatrix); // search.setKnowledge(knowledge); } else { throw new IllegalStateException(); } } else { throw new IllegalStateException(); } PcIndTestParams indTestParams = (PcIndTestParams) getParams().getIndTestParams(); search.setAlpha(indTestParams.getAlpha()); search.setBeamWidth(indTestParams.getBeamWidth()); search.setHighPValueAlpha(indTestParams.getZeroEdgeP()); this.graph = search.search(); // this.graph = search.getNewSemIm().getSemPm().getGraph(); setOriginalSemIm(search.getOriginalSemIm()); this.newSemIm = search.getNewSemIm(); fireGraphChange(graph); if (getSourceGraph() != null) { GraphUtils.arrangeBySourceGraph(graph, getSourceGraph()); } else if (knowledge.isDefaultToKnowledgeLayout()) { SearchGraphUtils.arrangeByKnowledgeTiers(graph, knowledge); } else { GraphUtils.circleLayout(graph, 200, 200, 150); } setResultGraph(SearchGraphUtils.patternForDag(graph, knowledge)); }
/** * Liefert das System-Objekt mit der angegebenen Objekt-ID zurück. * * @param id Die Objekt-ID des System-Objekts * @return Das gewünschte System-Objekt oder <code>null</code>, wenn es kein Objekt mit der * angegebenen ID gibt. * @see de.bsvrz.dav.daf.main.config.DataModel */ public SystemObject getObject(long id) { return _dataModel.getObject(id); }
public void setState(JOB_STATE newState) { state = newState; DataModel.updateList(); }