All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.lapissea.datamanager.domains.db.triggers.FileChange Maven / Gradle / Ivy

Go to download

An abstraction of folder/zip/jar reading with multi source fallback and lazy caching and SQL emulated mutable file system.

There is a newer version: 1.0.4
Show newest version
package com.lapissea.datamanager.domains.db.triggers;

import com.lapissea.datamanager.domains.db.FireOnlyTrigger;
import org.h2.api.Trigger;

import java.sql.*;

import static com.lapissea.datamanager.domains.db.SqlUtil.*;


public class FileChange implements FireOnlyTrigger{
	
	private Trigger reeee;
	
	@Override
	public void init(Connection con, String schemaName, String triggerName, String tableName, boolean before, int type) throws SQLException{
		FireOnlyTrigger[] TRIGGERS={
			//INSERT
			(conn, oldRow, newRow)->{
				fixPath(newRow);
				if(!before) connectFile(conn, (int)newRow[0], (String)newRow[2]);
			},
			//UPDATE
			(conn, oldRow, newRow)->{
				fixPath(newRow);
				
				Timestamp test=(Timestamp)newRow[3];
				newRow[3]=new Timestamp(System.currentTimeMillis());
				
				if(!((String)newRow[2]).equals(oldRow[2])){
					disconnectFile(conn, (int)oldRow[0], (String)oldRow[2]);
					connectFile(conn, (int)newRow[0], (String)newRow[2]);
				}
			},
			//DELETE
			(conn, oldRow, newRow)->{
				fixPath(oldRow);
				disconnectFile(conn, (int)oldRow[0], (String)oldRow[2]);
			}
		};
		
		reeee=TRIGGERS[32-Integer.numberOfLeadingZeros(type-1)];
	}
	
	@Override
	public void fire(Connection conn, Object[] oldRow, Object[] newRow) throws SQLException{
		reeee.fire(conn, oldRow, newRow);
	}
	
	public static void connectFile(Connection con, int id, String path) throws SQLException{
		path=fixPath(path);
		
		String[] parts=path.split("[/|\\\\]");
		
		ResultSet root=con.prepareCall("SELECT top 1 id FROM Folder WHERE path=''").executeQuery();
		root.next();
		int topFolderId=root.getInt(1);
		
		StringBuilder folderPath=new StringBuilder();
		
		for(int i=0;i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy