2017-11-19 03:49:49 +00:00
/ *
* MIT License
*
* Copyright ( c ) 2016 Bryan Terce
*
* Permission is hereby granted , free of charge , to any person obtaining a copy
* of this software and associated documentation files ( the " Software " ) , to deal
* in the Software without restriction , including without limitation the rights
* to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
* copies of the Software , and to permit persons to whom the Software is
* furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
* LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE .
*
* /
package com.btk5h.skriptdb ;
2020-05-18 12:34:43 +00:00
import org.bukkit.configuration.file.FileConfiguration ;
2017-11-19 03:49:49 +00:00
import org.bukkit.plugin.java.JavaPlugin ;
2020-05-18 12:34:43 +00:00
import java.io.* ;
import java.nio.charset.StandardCharsets ;
2017-11-19 03:49:49 +00:00
import java.sql.SQLException ;
import javax.sql.rowset.RowSetFactory ;
import javax.sql.rowset.RowSetProvider ;
import ch.njol.skript.Skript ;
import ch.njol.skript.SkriptAddon ;
2017-11-22 00:58:47 +00:00
/ * *
* # skript - db
*
* > Sensible SQL support for Skript .
*
* @index - 1
* /
2017-11-19 03:49:49 +00:00
public final class SkriptDB extends JavaPlugin {
private static SkriptDB instance ;
private static SkriptAddon addonInstance ;
private static RowSetFactory rowSetFactory ;
2020-05-18 12:34:43 +00:00
protected FileConfiguration config ;
2017-11-19 03:49:49 +00:00
public SkriptDB ( ) {
if ( instance = = null ) {
instance = this ;
} else {
throw new IllegalStateException ( ) ;
}
}
2020-05-18 12:34:43 +00:00
private void setupConfig ( ) throws IOException {
//don't check if it exists, because mkdir already does that
File file = new File ( " plugins/skript-db/config.yml " ) ;
if ( file . getParentFile ( ) . mkdirs ( ) ) {
BufferedWriter out = null ;
try {
out = new BufferedWriter ( new OutputStreamWriter ( new FileOutputStream ( " plugins/skript-db/config.yml " , false ) , StandardCharsets . UTF_8 ) ) ;
} catch ( FileNotFoundException e ) {
e . printStackTrace ( ) ;
}
try {
if ( out = = null ) return ;
out . write ( " # How many connections can be awaited for simultaneously, may be useful to increase if mysql database is hosted on a separate machine to account for ping. \ n " ) ;
out . write ( " # If it is hosted within the same machine, set it to the count of cores your processor has or the count of threads your processor can process at once. \ n " ) ;
out . write ( " thread-pool-size: " + ( Runtime . getRuntime ( ) . availableProcessors ( ) + 1 ) + " \ n " ) ;
} catch ( IOException e ) {
e . printStackTrace ( ) ;
}
try {
out . close ( ) ;
} catch ( IOException e ) {
e . printStackTrace ( ) ;
}
}
}
2017-11-19 03:49:49 +00:00
@Override
public void onEnable ( ) {
2020-05-18 12:34:43 +00:00
try {
setupConfig ( ) ;
} catch ( IOException e ) {
e . printStackTrace ( ) ;
2020-07-31 08:50:44 +00:00
} finally {
try {
rowSetFactory = RowSetProvider . newFactory ( ) ;
getAddonInstance ( ) . loadClasses ( " com.btk5h.skriptdb.skript " ) ;
} catch ( SQLException e ) {
throw new RuntimeException ( e ) ;
} catch ( IOException e ) {
e . printStackTrace ( ) ;
}
2020-05-18 12:34:43 +00:00
}
2017-11-19 03:49:49 +00:00
}
public static SkriptAddon getAddonInstance ( ) {
if ( addonInstance = = null ) {
addonInstance = Skript . registerAddon ( getInstance ( ) ) ;
}
return addonInstance ;
}
public static SkriptDB getInstance ( ) {
if ( instance = = null ) {
throw new IllegalStateException ( ) ;
}
return instance ;
}
public static RowSetFactory getRowSetFactory ( ) {
return rowSetFactory ;
}
}