/** * */ package webctdbexport.jdbc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.logging.Level; import java.util.logging.Logger; /** search for a learning context by name * @author cmg * */ public class FindLearningContext { static Logger logger = Logger.getLogger(FindLearningContext.class.getName()); /** * @param args */ public static void main(String[] args) { if (args.length<1 || args.length>3) { System.err.println("Usage: <jdbc.properties> <section-name-pattern> [<course-name-pattern>]"); System.exit(-1); } Connection conn = JdbcUtils.getConnection(args[0]); try { String sectionName = (args.length>1 ? args[1] : "%"), courseName = (args.length>2 ? args[2] : "%"); if (args.length==1) { // prompt BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Section name pattern?"); sectionName = br.readLine(); if (sectionName==null) System.exit(0); System.out.println("Course name pattern? (default: %)"); courseName = br.readLine(); if (courseName==null || courseName.length()==0) courseName = "%"; } logger.log(Level.INFO, "Search for Section(s) '"+sectionName+"' in Course(s) '"+courseName+"'"); PreparedStatement stmt = conn.prepareStatement("SELECT lc.ID, lc.NAME, lcp.ID, lcp.NAME FROM LEARNING_CONTEXT lc INNER JOIN LEARNING_CONTEXT lcp ON lc.PARENT_ID = lcp.ID WHERE lc.TYPE_CODE = 'Section' AND lc.NAME LIKE ? AND lcp.NAME LIKE ?"); ResultSet rs = null; try { stmt.setString(1, sectionName); stmt.setString(2, courseName); rs = stmt.executeQuery(); while(rs.next()) { BigDecimal lcid = rs.getBigDecimal(1); String lcSectionName = rs.getString(2); String lcCourseName = rs.getString(4); System.out.println("lc"+lcid+": "+lcCourseName+" - "+lcSectionName); } } finally { MoodleRepository.tidy(rs, stmt); } System.out.println("Done"); } catch (Exception e) { logger.log(Level.SEVERE, "Error", e); } finally { try { conn.close(); } catch (Throwable ignore) {} } } }