comparison src/nabble/model/TagImpl.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:7ecd1a4ef557
1 package nabble.model;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.sql.Statement;
8 import java.sql.Types;
9 import java.util.ArrayList;
10 import java.util.List;
11 import fschmidt.db.postgres.DbDatabaseImpl;
12
13
14 final class TagImpl {
15
16 private TagImpl() {} // never
17
18 static void addTag(Site site,Node node,User user,String label) {
19 try {
20 Connection con = site.getDb().getConnection();
21 PreparedStatement stmt = con.prepareStatement(
22 "insert into tag (node_id,user_id,label) values (?,?,?)"
23 );
24 if( node == null ) {
25 stmt.setNull( 1, Types.INTEGER );
26 } else {
27 stmt.setLong( 1, node.getId() );
28 }
29 if( user == null ) {
30 stmt.setNull( 2, Types.INTEGER );
31 } else {
32 stmt.setLong( 2, user.getId() );
33 }
34 stmt.setString( 3, label );
35 DbDatabaseImpl.executeUpdateIgnoringDuplicateKeys(stmt);
36 stmt.close();
37 con.close();
38 } catch(SQLException e) {
39 throw new RuntimeException(e);
40 }
41 }
42
43 static int countTags(SiteKey siteKey,String sqlCondition) {
44 try {
45 Connection con = siteKey.getDb().getConnection();
46 try {
47 Statement stmt = con.createStatement();
48 ResultSet rs = stmt.executeQuery(
49 "select count(*) as n from tag where " + sqlCondition
50 );
51 rs.next();
52 int n = rs.getInt("n");
53 rs.close();
54 stmt.close();
55 return n;
56 } finally {
57 con.close();
58 }
59 } catch(SQLException e) {
60 throw new RuntimeException("sqlCondition = "+sqlCondition,e);
61 }
62 }
63
64 static List<String> findTagLabels(Site site,String sqlCondition) {
65 try {
66 List<String> list = new ArrayList<String>();
67 Connection con = site.getDb().getConnection();
68 Statement stmt = con.createStatement();
69 ResultSet rs = stmt.executeQuery(
70 "select distinct label from tag where " + sqlCondition
71 );
72 while( rs.next() ) {
73 list.add( rs.getString("label") );
74 }
75 rs.close();
76 stmt.close();
77 con.close();
78 return list;
79 } catch(SQLException e) {
80 throw new RuntimeException(e);
81 }
82 }
83
84 static List<Long> findTagUserIds(Site site,String sqlCondition) {
85 try {
86 List<Long> list = new ArrayList<Long>();
87 Connection con = site.getDb().getConnection();
88 Statement stmt = con.createStatement();
89 ResultSet rs = stmt.executeQuery(
90 "select distinct user_id from tag where " + sqlCondition
91 );
92 while( rs.next() ) {
93 list.add( rs.getLong("user_id") );
94 }
95 rs.close();
96 stmt.close();
97 con.close();
98 return list;
99 } catch(SQLException e) {
100 throw new RuntimeException(e);
101 }
102 }
103
104 static List<Long> findTagNodeIds(Site site,String sqlCondition) {
105 try {
106 List<Long> list = new ArrayList<Long>();
107 Connection con = site.getDb().getConnection();
108 Statement stmt = con.createStatement();
109 ResultSet rs = stmt.executeQuery(
110 "select distinct node_id from tag where " + sqlCondition
111 );
112 while( rs.next() ) {
113 list.add( rs.getLong("node_id") );
114 }
115 rs.close();
116 stmt.close();
117 con.close();
118 return list;
119 } catch(SQLException e) {
120 throw new RuntimeException(e);
121 }
122 }
123
124 static void deleteTags(SiteKey siteKey,String sqlCondition) {
125 try {
126 Connection con = siteKey.getDb().getConnection();
127 Statement stmt = con.createStatement();
128 stmt.executeUpdate(
129 "delete from tag where " + sqlCondition
130 );
131 stmt.close();
132 con.close();
133 } catch(SQLException e) {
134 throw new RuntimeException(e);
135 }
136 }
137
138 }