Advertisement
Guest User

Untitled

a guest
Feb 25th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.74 KB | None | 0 0
  1. package asdasd;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.ResultSet;
  5. import java.sql.ResultSetMetaData;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.Collections;
  9. import java.util.List;
  10. import java.util.Stack;
  11. import java.util.TreeMap;
  12.  
  13. import javax.sql.DataSource;
  14.  
  15. import org.springframework.jdbc.CannotGetJdbcConnectionException;
  16. import org.springframework.jdbc.core.JdbcTemplate;
  17. import org.springframework.jdbc.core.RowMapper;
  18. import org.springframework.jdbc.datasource.DataSourceUtils;
  19. import org.springframework.jdbc.datasource.DriverManagerDataSource;
  20.  
  21.  
  22. public class Main {
  23. public static void main(String[] args) throws SQLException, CannotGetJdbcConnectionException
  24. {
  25.  
  26. DriverManagerDataSource dS = new DriverManagerDataSource();
  27. String userName = "root"; //логин на сервере
  28. String password = "12345"; //пароль
  29. String url = "jdbc:mysql://localhost/COREJAVA"; //url подключения
  30. String clNm = "com.mysql.jdbc.Driver";
  31.  
  32. dS.setDriverClassName(clNm);
  33. dS.setUsername(userName);
  34. dS.setPassword(password);
  35. dS.setUrl(url);
  36.  
  37. DataSource s = (DataSource) dS;
  38. JdbcTemplate jdbcTemplate = new JdbcTemplate(s);
  39.  
  40. Connection c = null;
  41. try
  42. {
  43. c = DataSourceUtils.getConnection(s);
  44. System.out.println("Connecting established");
  45.  
  46.  
  47. List<Obj> k = jdbcTemplate.query(
  48. "SELECT * FROM test ORDER BY PARENT_ID ;",
  49. new RowMapper<Obj>() {
  50. public Obj mapRow(ResultSet rs, int rowNum) throws SQLException {
  51. int id = rs.getInt(1);
  52. String name = rs.getString(2);
  53. int parent = rs.getInt(3);
  54. Obj o = new Obj(name, id, parent);
  55.  
  56. ResultSetMetaData rsmd = rs.getMetaData();
  57. int columnCount = rsmd.getColumnCount();
  58.  
  59. for(int i = 1; i <= rsmd.getColumnCount(); i++)
  60. {
  61. System.out.println(rsmd.getColumnName(i));
  62. }
  63. System.out.println("Число столюцов" + columnCount);
  64.  
  65. return o;
  66.  
  67. }
  68. });
  69.  
  70.  
  71.  
  72. TreeMap<Integer, Obj> m = new TreeMap<Integer, Obj>();
  73.  
  74. for(int i = 0; i < k.size(); i++)
  75. {
  76. m.put(k.get(i).getId(), k.get(i));
  77. }
  78.  
  79.  
  80.  
  81. for(Obj o :m.values())
  82. {
  83. int parentId = o.getParentId(); //определяем id предка текущего элемента в TreeMap
  84. Obj Parent = m.get(parentId); //обращаемся к предку
  85. if (Parent != null) //если объект сущесвтует
  86. Parent.addChildObj(o); //добавляем к нему дочерние объекты
  87. }
  88.  
  89. for(Obj o : m.values())
  90. {
  91. System.out.println("Узел");
  92. System.out.println(o.getId() + " " + o.getValue() + o.getParentId());
  93. System.out.println("Предки");
  94. for(int i = 0; i < o.getChildren().size(); i++)
  95. {
  96.  
  97. System.out.println(o.getChildren().get(i).getId() + " " + o.getChildren().get(i).getValue()
  98. + " " + o.getChildren().get(i).getParentId());
  99. }
  100. }
  101.  
  102. Stack<Obj> st = new Stack<>();
  103. Stack<Integer> st_lev = new Stack<>();
  104.  
  105. Obj o = m.get(1);
  106.  
  107. int level = 0; //
  108.  
  109.  
  110. for(int i = 0; i < m.size(); i++)
  111. {
  112.  
  113. for(int j = 0; j < level; j++)
  114. {
  115. System.out.print(" ");
  116. }
  117. System.out.println(o.getId() +" " + o.getValue());
  118.  
  119.  
  120. int size = o.getChildren().size();
  121.  
  122. if (size == 0)
  123. {
  124. if( !st.empty())
  125. {
  126. o = st.pop();
  127. }
  128.  
  129. if ( !st_lev.empty())
  130. {
  131. level = st_lev.pop();
  132. }
  133.  
  134. }
  135. else
  136. {
  137. if (size == 1)
  138. {
  139. o = o.getChildren().get(0);
  140. level++;
  141. }
  142. else
  143. {
  144. level++;
  145. for(int x = 1; x < size; x++)
  146. {
  147. st.push(o.getChildren().get(x));
  148. st_lev.push(level);
  149. }
  150. o = o.getChildren().get(0);
  151. }
  152. }
  153. }
  154.  
  155. } catch (Exception e) {
  156. System.err.println("Cannot connect to database server"); //вывод сообщения об ошибке
  157. e.printStackTrace();
  158. } finally {
  159. if (c != null) {
  160. try {
  161. c.close(); //закрываем подключение
  162. System.out.println("Database connection terminated");
  163. } catch (Exception e) {
  164. }
  165. }
  166. }
  167. }
  168. }
  169.  
  170. class Obj {
  171. private String value;
  172. private int id;
  173. private int parentId;
  174. private List<Obj> children = new ArrayList<Obj>();
  175.  
  176. public Obj(String value, int id, int parentId) {
  177. this.value = value;
  178. this.id = id;
  179. this.parentId = parentId;
  180. }
  181.  
  182. public void addChildObj(Obj o) {
  183. this.children.add(o);
  184. }
  185.  
  186. public List<Obj> getChildren() {
  187. return Collections.unmodifiableList(children);
  188. }
  189.  
  190. public int getParentId() {
  191. return parentId;
  192. }
  193.  
  194. public String getValue() {
  195. return value;
  196. }
  197.  
  198. public int getId() {
  199. return id;
  200. }
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement