package com.pritom.kumar;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
* Created by pritom on 18/10/2016.
*/
public class StoredProcedureUtils {
static Connection connection = null;
public static void main(String[] args) throws Exception {
alterTableSchema("some_db_name");
}
static void alterTableSchema(String databaseName) throws Exception {
/* Query for retrieve table names from database */
String query = "SELECT table_name FROM information_schema.tables " +
"WHERE table_schema='" + databaseName + "' ORDER BY table_name;";
/* Create statement */
Statement statement = getConnection().createStatement();
/* Retrieving all table names */
ResultSet resultSet = statement.executeQuery(query);
List<String> tableList = new ArrayList<String>();
while (resultSet.next()) {
tableList.add(resultSet.getString(1));
}
/* Set database not to check foreign key constraints */
statement.execute("SET FOREIGN_KEY_CHECKS=0;");
/* Alter table structure */
for (Integer index = 0; index < tableList.size(); index++) {
String tableName = tableList.get(index);
try {
statement.execute("ALTER TABLE " + databaseName + "." + tableName + " MODIFY id BIGINT(20) AUTO_INCREMENT;");
pl(formatAsLength("Done Alter Table=" + tableName, 70, "") + (index + 1) + " Of " + tableList.size());
}
catch (Exception ex) {
pl(formatAsLength("Error Alter Table=" + tableName, 70, "") + "Error=" + ex.getMessage());
}
}
/* Set database mode to check foreign key constraints again */
statement.execute("SET FOREIGN_KEY_CHECKS=1;");
/* Close statement */
statement.close();
}
static Connection getConnection() throws Exception {
if (connection != null) {
return connection;
}
connection = DriverManager.getConnection("jdbc:mysql://localhost/some_db_name?user=root&password=");
return connection;
}
static void pl(Object o) {
System.out.println("" + o);
}
static String formatAsLength(String number, Integer minLength, String replaceEmptyWith) {
number = String.format("%-" + minLength + "s", number);
return replaceEmptyWith.length() > 0 ? number.replace(" ", replaceEmptyWith) : number;
}
}
At first have to extend "grails.plugin.mail.MailService" as follows: |
class MyMailService extends MailService MyMailService would be like: package com.pkm.services.mail import grails.plugin.mail.MailMessageBuilder import grails.plugin.mail.MailService import org.springframework.mail.MailMessage import org.springframework.mail.javamail.MimeMessageHelper class MyMailService extends MailService { MailMessage sendMail(Closure callable) { if (isDisabled()) { throw new Exception("Sending emails disabled by configuration option") return null } MailMessageBuilder messageBuilder = mailMessageBuilderFactory.createBuilder(mailConfig) messageBuilder.multipart(true) /* Sending some custom headers with this email */ Map<String, String> v = new HashMap<String,String>() v.put("header_1", "Header_1") v.put("header_2", "Header_2") messageBuilder.headers(v) callable.delegate = messageBuilder callable.resolveStrategy = Closure.DELEGATE_FIRST callable.call(messageBuilder) MailMessage mailMessage = messageBuilder.sendMessage(mailExecutorService) /* Reading unique message ID */ MimeMessageHelper mimeMessageHelper = messageBuilder.getProperty("helper") String messageID = mimeMessageHelper.mimeMessage.getHeader("Message-ID").toString().trim() /* Now you can do your stuff with messageID */ return mailMessage } } |
Use below code snippet to send mail |
myMailService.sendMail() { mailSender.host = "host.mail.com" mailSender.javaMailProperties.put("mail.smtp.auth", "true") mailSender.username = "pritomkucse@gmail.com" mailSender.password = "xxxxxxxxx" mailSender.port = 569 multipart true from "Pritom<pritomkucse@gmail.com>" to replyTo cc bcc subject text html attachBytes "some.name" "file_type" fileBytes } |
You need to add following dependency to BuildConfig.groovy as follows: |
grails.project.dependency.resolution = { // inherit Grails' default dependencies inherits("global") { // specify dependency exclusions here; for example, uncomment this to disable ehcache: // excludes 'ehcache' } log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose' checksums true // Whether to verify checksums on resolve legacyResolve false // whether to do a secondary resolve on plugin installation, not advised and here for backwards compatibility repositories { inherits true // Whether to inherit repository definitions from plugins grailsPlugins() grailsHome() mavenLocal() grailsCentral() mavenCentral() // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories //mavenRepo "http://repository.codehaus.org" //mavenRepo "http://download.java.net/maven/2/" //mavenRepo "http://repository.jboss.com/maven2/" } dependencies { // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g. // runtime 'mysql:mysql-connector-java:5.1.29' // runtime 'org.postgresql:postgresql:9.3-1101-jdbc41' test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4" compile "org.springframework:spring-orm:$springVersion" runtime 'mysql:mysql-connector-java:5.1.29' } plugins { // plugins for the build system only build ":tomcat:7.0.55" // plugins for the compile step compile ":scaffolding:2.1.2" compile ':cache:1.1.8' compile ":asset-pipeline:1.9.9" compile ":mail:1.0.5" // plugins needed at runtime but not for compilation runtime ":hibernate4:4.3.6.1" // or ":hibernate:3.6.10.18" runtime ":database-migration:1.4.0" runtime ":jquery:1.11.1" // Uncomment these to enable additional asset-pipeline capabilities //compile ":sass-asset-pipeline:1.9.0" //compile ":less-asset-pipeline:1.10.0" //compile ":coffee-asset-pipeline:1.8.0" //compile ":handlebars-asset-pipeline:1.3.0.3" } } |