@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;
 }
Example #4
0
  /**
   * 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);
  }
Example #6
0
 /** 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;
 }
Example #7
0
  /** 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();
      }
    }
  }
Example #8
0
 /**
  * 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;
 }
Example #9
0
  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;
    }
  }
Example #10
0
  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);
 }
Example #12
0
  /**
   * 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);
        }
      }
    }
  }
Example #13
0
 /** 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);
  }
Example #16
0
  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);
  }
Example #18
0
  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);
  }
Example #19
0
 /**
  * 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;
 }
Example #20
0
 /**
  * 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;
  }
Example #22
0
 /**
  * Called when the page is ready.
  */
 public static void onPageLoad() throws Exception {
     DataModel.onPageLoad();
 }
Example #23
0
 /**
  * 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;
 }
Example #24
0
  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);
  }
Example #25
0
 /**
  * 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);
 }
Example #29
0
 public void setState(JOB_STATE newState) {
   state = newState;
   DataModel.updateList();
 }