/** * Sorts the data models. * * @param input the models that will be sorted * @param output the output of the sorting * @param external the external dependencies * @throws DataStructureModelException the data structure model exception */ public static void sort(Map<String, DataStructureModel> input, List<String> output, List<String> external) throws DataStructureModelException { List<String> processing = new ArrayList<String>(); for (Entry<String, DataStructureModel> entry : input.entrySet()) { DataStructureModel dataStructureModel = entry.getValue(); followDependencies(input, output, external, processing, dataStructureModel); String name = dataStructureModel.getName(); if (!output.contains(name)) { output.add(name); } } }
processing.add(dataStructureModel.getName()); List<DataStructureDependencyModel> dependencies = dataStructureModel.getDependencies(); for (DataStructureDependencyModel dependencyModel : dependencies) { if (input.containsKey(dependencyName)) { if (processing.contains(dependencyName)) { throw new DataStructureModelException(String.format("Cyclic dependency %s in %s", dataStructureModel.getName(), dependencyName)); processing.remove(dataStructureModel.getName());
try { if (model instanceof DataStructureTableModel) { if (SqlFactory.getNative(connection).exists(connection, model.getName())) { if (SqlFactory.getNative(connection).count(connection, model.getName()) == 0) { executeTableDrop(connection, (DataStructureTableModel) model); } else { DataStructureModel model = DATA_STRUCTURE_MODELS.get(dsName); try { if (!SqlFactory.getNative(connection).exists(connection, model.getName())) { if (model instanceof DataStructureTableModel) { executeTableCreate(connection, (DataStructureTableModel) model); if (model instanceof DataStructureTableModel && SqlFactory.getNative(connection).count(connection, model.getName()) != 0) { executeTableAlter(connection, (DataStructureTableModel) model); DataStructureModel model = DATA_STRUCTURE_MODELS.get(dsName); try { if (!SqlFactory.getNative(connection).exists(connection, model.getName())) { if (model instanceof DataStructureViewModel) { executeViewCreate(connection, (DataStructureViewModel) model);