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

com.lapissea.datamanager.managers.DataManagerSingle 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.managers;

import com.lapissea.datamanager.DataSignature;
import com.lapissea.datamanager.Domain;
import com.lapissea.datamanager.DomainRegistry;
import com.lapissea.datamanager.IDataManager;
import com.lapissea.util.NotNull;
import com.lapissea.util.Nullable;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.ObjIntConsumer;
import java.util.stream.Stream;

@SuppressWarnings("CatchMayIgnoreException")
public class DataManagerSingle implements IDataManager{
	
	private final Domain domain;
	
	public DataManagerSingle(@NotNull String domainPath){
		domain=DomainRegistry.create(domainPath);
	}
	
	@Nullable
	@Override
	public BufferedInputStream getInStream(@NotNull String localPath){
		
		try{
			BufferedInputStream t=domain.getInStream(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		
		return null;
	}
	
	@Nullable
	@Override
	public BufferedReader getReader(@NotNull String localPath){
		
		try{
			BufferedReader t=domain.getReader(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Override
	public long getSize(@NotNull String localPath){
		
		
		try{
			long t=domain.getSize(localPath);
			if(t!=-1) return t;
		}catch(Exception e){}
		return -1;
	}
	
	@Nullable
	@Override
	public byte[] readAllBytes(@NotNull String localPath){
		
		try{
			byte[] t=domain.getBytes(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Nullable
	@Override
	public char[] readAllChars(@NotNull String localPath){
		
		try{
			char[] t=domain.getChars(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Nullable
	@Override
	public String readAll(@NotNull String localPath){
		
		try{
			String t=domain.readAll(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Nullable
	@Override
	public List getLines(@NotNull String localPath){
		
		try{
			List t=domain.getLines(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@NotNull
	@Override
	public DataManagerSingle getLines(@NotNull String localPath, @NotNull Consumer lineConsumer){
		
		try{
			if(domain.getLines(localPath, lineConsumer)) return this;
		}catch(Exception e){}
		return this;
	}
	
	@NotNull
	@Override
	public DataManagerSingle getLines(@NotNull String localPath, @NotNull ObjIntConsumer lineConsumer){
		
		try{
			if(domain.getLines(localPath, lineConsumer)) return this;
		}catch(Exception e){}
		return this;
	}
	
	@Nullable
	@Override
	public String[] getDirNames(@NotNull String localPath){
		
		try{
			String[] t=domain.getDirNames(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Override
	public boolean exists(@NotNull String localPath){
		
		try{
			if(domain.exists(localPath)) return true;
		}catch(Exception e){}
		return false;
	}
	
	@Nullable
	@Override
	public String[] getDirPaths(@NotNull String localPath){
		
		try{
			String[] t=domain.getDirPaths(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Nullable
	@Override
	public String[] getDirPathsDeep(@NotNull String localPath){
		
		try{
			String[] t=domain.getDirPathsDeep(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Nullable
	@Override
	public Stream getDirPathsS(@NotNull String localPath){
		
		try{
			Stream t=domain.getDirPathsS(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Nullable
	@Override
	public Stream getDirPathsDeepS(@NotNull String localPath){
		
		try{
			Stream t=domain.getDirPathsDeepS(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@Override
	public boolean canEditCreate(@NotNull String localPath){
		if(domain.canEditCreate(localPath)){
			return true;
		}
		return false;
	}
	
	@NotNull
	@Override
	public BufferedOutputStream makeFile(@NotNull String localPath){
		if(domain.canEditCreate(localPath)){
			return domain.makeFile(localPath);
		}
		throw new UnsupportedOperationException();
	}
	
	@Override
	public void makeFile(@NotNull String localPath, byte[] data){
		if(domain.canEditCreate(localPath)){
			domain.makeFile(localPath, data);
			return;
		}
		throw new UnsupportedOperationException();
	}
	
	@Nullable
	@Override
	public Stream getDirNamesS(@NotNull String localPath){
		try{
			Stream t=domain.getDirNamesS(localPath);
			if(t!=null) return t;
		}catch(Exception e){}
		return null;
	}
	
	@NotNull
	@Override
	public IDataManager subData(@NotNull String localPath){
		
		if(!exists(localPath)){
			throw new IllegalStateException(localPath+" does not exist in : "+domain.getSignature());
		}
		return new SubDataManager(this, localPath);
	}
	
	@NotNull
	@Override
	public DataSignature createSignature(@NotNull String localPath){
		return new DataSignature(localPath, this);
	}
	
	@Override
	public long getLastChange(@NotNull String localPath){
		
		long time=domain.getLastChange(localPath);
		if(time!=-1) return time;
		return -1;
	}
	
	@NotNull
	@Override
	public String toString(){
		return domain.getSignature();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy