|
13 | 13 | */ |
14 | 14 | package org.openmrs.standalone; |
15 | 15 |
|
| 16 | +import org.apache.ibatis.jdbc.ScriptRunner; |
| 17 | + |
16 | 18 | import java.io.File; |
17 | 19 | import java.io.FileInputStream; |
18 | 20 | import java.io.FileNotFoundException; |
19 | 21 | import java.io.IOException; |
20 | 22 | import java.io.InputStream; |
21 | 23 | import java.io.InputStreamReader; |
22 | 24 | import java.io.UnsupportedEncodingException; |
| 25 | +import java.io.Reader; |
| 26 | +import java.io.FileReader; |
| 27 | +import java.nio.file.Path; |
| 28 | +import java.nio.file.Paths; |
| 29 | +import java.sql.Connection; |
| 30 | +import java.sql.DriverManager; |
23 | 31 | import java.util.Properties; |
24 | 32 |
|
25 | 33 | public class OpenmrsUtil { |
@@ -212,4 +220,41 @@ public static void setDefaultOS(){ |
212 | 220 | public static String getTitle() { |
213 | 221 | return "OpenMRS " + REFAPP_VERSION + " Standalone"; |
214 | 222 | } |
| 223 | + |
| 224 | + public static void importSqlFile(File sqlFile, String jdbcUrl, String user, String password) { |
| 225 | + if (!sqlFile.exists()) { |
| 226 | + System.err.println(":x: SQL file not found: " + sqlFile.getAbsolutePath()); |
| 227 | + return; |
| 228 | + } |
| 229 | + |
| 230 | + System.out.println("✅ Preparing to import "+sqlFile+" data"); |
| 231 | + try (Connection conn = DriverManager.getConnection(jdbcUrl, user, password)) { |
| 232 | + |
| 233 | + System.out.println("📥 Importing SQL from: " + sqlFile.getAbsolutePath()); |
| 234 | + try (Reader reader = new FileReader(sqlFile)) { |
| 235 | + ScriptRunner scriptRunner = new ScriptRunner(conn); |
| 236 | + scriptRunner.setLogWriter(null); // Disable logs |
| 237 | + scriptRunner.setStopOnError(true); |
| 238 | + scriptRunner.runScript(reader); |
| 239 | + System.out.println("✅ Successfully imported SQL: " + sqlFile.getAbsolutePath()); |
| 240 | + } |
| 241 | + |
| 242 | + } catch (Exception e) { |
| 243 | + System.err.println("❌ Error importing SQL: " + e.getMessage()); |
| 244 | + e.printStackTrace(); |
| 245 | + } |
| 246 | + } |
| 247 | + |
| 248 | + public static String findDumpExecutable(String baseDir, String dbDir) { |
| 249 | + String os = System.getProperty("os.name").toLowerCase(); |
| 250 | + boolean isWindows = os.contains("win"); |
| 251 | + |
| 252 | + Path mariadbDump = Paths.get(baseDir, dbDir, "bin", isWindows ? "mysqldump.exe" : "mariadb-dump"); |
| 253 | + |
| 254 | + if (mariadbDump.toFile().exists()) { |
| 255 | + return mariadbDump.toString(); |
| 256 | + } else { |
| 257 | + throw new RuntimeException("❌ Neither mariadb-dump nor mysqldump found in: " + mariadbDump.getParent()); |
| 258 | + } |
| 259 | + } |
215 | 260 | } |
0 commit comments