diff --git a/build.xml b/build.xml index cc22327..59919b6 100644 --- a/build.xml +++ b/build.xml @@ -29,6 +29,7 @@ + @@ -39,6 +40,7 @@ + diff --git a/extern/lombok.jar b/extern/lombok.jar new file mode 100644 index 0000000..b1dd5a8 Binary files /dev/null and b/extern/lombok.jar differ diff --git a/src/com/sheepit/client/Client.java b/src/com/sheepit/client/Client.java index 8cc535b..f6b0716 100644 --- a/src/com/sheepit/client/Client.java +++ b/src/com/sheepit/client/Client.java @@ -47,16 +47,19 @@ import com.sheepit.client.exception.FermeExceptionSessionDisabled; import com.sheepit.client.exception.FermeServerDown; import com.sheepit.client.os.OS; +import lombok.Data; + +@Data public class Client { private Gui gui; private Server server; - private Configuration config; + private Configuration configuration; private Log log; private Job renderingJob; private Job previousJob; private BlockingQueue jobsToValidate; private boolean isValidatingJob; - private long start_time; + private long startTime; private boolean disableErrorSending; private boolean running; @@ -64,10 +67,10 @@ public class Client { private int maxDownloadFileAttempts = 5; - public Client(Gui gui_, Configuration config, String url_) { - this.config = config; - this.server = new Server(url_, this.config, this); - this.log = Log.getInstance(this.config); + public Client(Gui gui_, Configuration configuration, String url_) { + this.configuration = configuration; + this.server = new Server(url_, this.configuration, this); + this.log = Log.getInstance(this.configuration); this.gui = gui_; this.renderingJob = null; this.previousJob = null; @@ -80,40 +83,16 @@ public class Client { } public String toString() { - return String.format("Client (config %s, server %s)", this.config, this.server); - } - - public Job getRenderingJob() { - return this.renderingJob; - } - - public Gui getGui() { - return this.gui; - } - - public Configuration getConfiguration() { - return this.config; - } - - public Server getServer() { - return this.server; - } - - public Log getLog() { - return this.log; - } - - public long getStartTime() { - return this.start_time; + return String.format("Client (configuration %s, server %s)", this.configuration, this.server); } public int run() { - if (this.config.checkOSisSupported() == false) { + if (this.configuration.checkOSisSupported() == false) { this.gui.error(Error.humanString(Error.Type.OS_NOT_SUPPORTED)); return -3; } - if (this.config.checkCPUisSupported() == false) { + if (this.configuration.checkCPUisSupported() == false) { this.gui.error(Error.humanString(Error.Type.CPU_NOT_SUPPORTED)); return -4; } @@ -125,7 +104,7 @@ public class Client { step = this.log.newCheckPoint(); this.gui.status("Starting"); - this.config.cleanWorkingDirectory(); + this.configuration.cleanWorkingDirectory(); Error.Type ret; ret = this.server.getConfiguration(); @@ -138,7 +117,7 @@ public class Client { return -1; } - this.start_time = new Date().getTime(); + this.startTime = new Date().getTime(); this.server.start(); // for staying alive // create a thread which will send the frame @@ -215,7 +194,7 @@ public class Client { this.renderingJob = null; } else { - this.start_time = new Date().getTime(); // reset start session time because the server did it + this.startTime = new Date().getTime(); // reset start session time because the server did it try { Calendar next_request = this.nextJobRequest(); if (next_request != null) { @@ -345,7 +324,7 @@ public class Client { continue; } - if (this.renderingJob.simultaneousUploadIsAllowed() == false) { // power or compute_method job, need to upload right away + if (this.renderingJob.isSynchronousUpload() == false) { // power or compute_method job, need to upload right away ret = confirmJob(this.renderingJob); if (ret != Error.Type.OK) { gui.error("Client::run problem with confirmJob (returned " + ret + ")"); @@ -403,8 +382,8 @@ public class Client { } } - // this.config.workingDirectory.delete(); - this.config.removeWorkingDirectory(); + // this.configuration.workingDirectory.delete(); + this.configuration.removeWorkingDirectory(); if (this.server == null) { return 0; @@ -428,10 +407,6 @@ public class Client { return 0; } - public boolean isSuspended() { - return this.suspended; - } - public void suspend() { suspended = true; } @@ -451,10 +426,6 @@ public class Client { this.running = true; } - public boolean isRunning() { - return this.running; - } - public int senderLoop() { int step = log.newCheckPoint(); Error.Type ret; @@ -538,13 +509,13 @@ public class Client { * @return the date of the next request, or null if there is not delay (null <=> now) */ public Calendar nextJobRequest() { - if (this.config.requestTime == null) { + if (this.configuration.getRequestTime() == null) { return null; } else { Calendar next = null; Calendar now = Calendar.getInstance(); - for (Pair interval : this.config.requestTime) { + for (Pair interval : this.configuration.getRequestTime()) { Calendar start = (Calendar) now.clone(); Calendar end = (Calendar) now.clone(); start.set(Calendar.SECOND, 00); @@ -605,14 +576,14 @@ public class Client { if (scene_file.exists() == false) { gui.setRenderingProjectName(""); this.log.error("Client::work job preparation failed (scene file '" + scene_file.getAbsolutePath() + "' does not exist), cleaning directory in hope to recover"); - this.config.cleanWorkingDirectory(); + this.configuration.cleanWorkingDirectory(); return Error.Type.MISSING_SCENE; } if (renderer_file.exists() == false) { gui.setRenderingProjectName(""); this.log.error("Client::work job preparation failed (renderer file '" + renderer_file.getAbsolutePath() + "' does not exist), cleaning directory in hope to recover"); - this.config.cleanWorkingDirectory(); + this.configuration.cleanWorkingDirectory(); return Error.Type.MISSING_RENDERER; } @@ -631,7 +602,7 @@ public class Client { this.log.error("Client::work problem with runRenderer (ret " + err + ")"); if (err == Error.Type.RENDERER_CRASHED_PYTHON_ERROR) { this.log.error("Client::work failed with python error, cleaning directory in hope to recover"); - this.config.cleanWorkingDirectory(); + this.configuration.cleanWorkingDirectory(); } return err; } @@ -646,7 +617,7 @@ public class Client { } protected int downloadExecutable(Job ajob) throws FermeExceptionNoSpaceLeftOnDevice { - return this.downloadFile(ajob, ajob.getRendererArchivePath(), ajob.getRenderMd5(), String.format("%s?type=binary&job=%s", this.server.getPage("download-archive"), ajob.getId()), "renderer"); + return this.downloadFile(ajob, ajob.getRendererArchivePath(), ajob.getRendererMD5(), String.format("%s?type=binary&job=%s", this.server.getPage("download-archive"), ajob.getId()), "renderer"); } private int downloadFile(Job ajob, String local_path, String md5_server, String url, String download_type) throws FermeExceptionNoSpaceLeftOnDevice { @@ -757,7 +728,7 @@ public class Client { scene_path_file.mkdir(); // unzip the archive - ret = Utils.unzipFileIntoDirectory(scene_archive, scene_path, ajob.getSceneArchivePassword(), log); + ret = Utils.unzipFileIntoDirectory(scene_archive, scene_path, ajob.getPassword(), log); if (ret != 0) { this.log.error("Client::prepareWorkingDirectory, error(2) with Utils.unzipFileIntoDirectory(" + scene_archive + ", " + scene_path + ") returned " + ret); this.gui.error("Client::prepareWorkingDirectory, error with Utils.unzipFileIntoDirectory of the scene (returned " + ret + ")"); @@ -825,15 +796,11 @@ public class Client { return Error.Type.OK; } - public Job getPreviousJob() { - return this.previousJob; - } - protected boolean shouldWaitBeforeRender() { int concurrent_job = this.jobsToValidate.size(); if (this.isValidatingJob) { concurrent_job++; } - return (concurrent_job >= this.config.maxUploadingJob()); + return (concurrent_job >= this.configuration.getMaxUploadingJob()); } } diff --git a/src/com/sheepit/client/Configuration.java b/src/com/sheepit/client/Configuration.java index 80d4def..4839e88 100644 --- a/src/com/sheepit/client/Configuration.java +++ b/src/com/sheepit/client/Configuration.java @@ -34,17 +34,19 @@ import java.util.List; import com.sheepit.client.hardware.cpu.CPU; import com.sheepit.client.hardware.gpu.GPUDevice; import com.sheepit.client.os.OS; +import lombok.Data; +@Data public class Configuration { public enum ComputeType { CPU_GPU, CPU, GPU } // accept job for ... private String configFilePath; - public File workingDirectory; - public File storageDirectory; // for permanent storage (binary archive) - public boolean userHasSpecifiedACacheDir; - public String static_exeDirName; + private File workingDirectory; + private File storageDirectory; // for permanent storage (binary archive) + private boolean userHasSpecifiedACacheDir; + private String static_exeDirName; private String login; private String password; private String proxy; @@ -57,7 +59,7 @@ public class Configuration { private GPUDevice GPUDevice; private boolean detectGPUs; private boolean printLog; - public List> requestTime; + private List> requestTime; private String extras; private boolean autoSignIn; private String UIType; @@ -96,78 +98,6 @@ public class Configuration { return String.format("Configuration (workingDirectory '%s')", this.workingDirectory.getAbsolutePath()); } - public String getConfigFilePath() { - return this.configFilePath; - } - - public void setConfigPath(String val) { - this.configFilePath = val; - } - - public String login() { - return this.login; - } - - public void setLogin(String login_) { - this.login = login_; - } - - public String password() { - return this.password; - } - - public void setPassword(String password_) { - this.password = password_; - } - - public String getProxy() { - return this.proxy; - } - - public void setProxy(String url) { - this.proxy = url; - } - - public int maxUploadingJob() { - return this.maxUploadingJob; - } - - public GPUDevice getGPUDevice() { - return this.GPUDevice; - } - - public boolean getDetectGPUs() { - return this.detectGPUs; - } - - public void setMaxUploadingJob(int max) { - this.maxUploadingJob = max; - } - - public void setUseNbCores(int nbcores) { - this.nbCores = nbcores; - } - - public int getNbCores() { - return this.nbCores; - } - - public void setMaxMemory(long max) { - this.maxMemory = max; - } - - public long getMaxMemory() { - return this.maxMemory; - } - - public void setMaxRenderTime(int max) { - this.maxRenderTime = max; - } - - public int getMaxRenderTime() { - return this.maxRenderTime; - } - public void setUsePriority(int priority) { if (priority > 19) priority = 19; @@ -178,38 +108,10 @@ public class Configuration { } - public int getPriority() { - return this.priority; - } - - public void setPrintLog(boolean val) { - this.printLog = val; - } - - public boolean getPrintLog() { - return this.printLog; - } - public int computeMethodToInt() { return this.computeMethod.ordinal(); } - public ComputeType getComputeMethod() { - return this.computeMethod; - } - - public void setUseGPU(GPUDevice device) { - this.GPUDevice = device; - } - - public void setDetectGPUs(boolean val) { - this.detectGPUs = val; - } - - public void setComputeMethod(ComputeType meth) { - this.computeMethod = meth; - } - public void setCacheDir(File cache_dir_) { removeWorkingDirectory(); if (cache_dir_ == null) { @@ -259,12 +161,8 @@ public class Configuration { } } - public boolean getUserHasSpecifiedACacheDir() { - return this.userHasSpecifiedACacheDir; - } - public File getCacheDirForSettings() { - if (this.getUserHasSpecifiedACacheDir() == false) { + if (this.userHasSpecifiedACacheDir == false) { return null; } else { @@ -273,46 +171,6 @@ public class Configuration { } } - public void setExtras(String str) { - this.extras = str; - } - - public String getExtras() { - return this.extras; - } - - public void setAutoSignIn(boolean v) { - this.autoSignIn = v; - } - - public boolean getAutoSignIn() { - return this.autoSignIn; - } - - public void setUIType(String ui) { - this.UIType = ui; - } - - public String getUIType() { - return this.UIType; - } - - public void setTileSize(int size) { - this.tileSize = size; - } - - public int getTileSize() { - return this.tileSize; - } - - public void setHostname(String hostname_) { - this.hostname = hostname_; - } - - public String getHostname() { - return this.hostname; - } - public String getDefaultHostname() { try { return InetAddress.getLocalHost().getHostName(); diff --git a/src/com/sheepit/client/Job.java b/src/com/sheepit/client/Job.java index 5b5edd2..a2ddaab 100644 --- a/src/com/sheepit/client/Job.java +++ b/src/com/sheepit/client/Job.java @@ -46,17 +46,20 @@ import com.sheepit.client.Error.Type; import com.sheepit.client.hardware.gpu.GPUDevice; import com.sheepit.client.hardware.gpu.opencl.OpenCL; import com.sheepit.client.os.OS; +import lombok.Data; +import lombok.Getter; +@Data public class Job { public static final String UPDATE_METHOD_BY_REMAINING_TIME = "remainingtime"; public static final String UPDATE_METHOD_BLENDER_INTERNAL_BY_PART = "blenderinternal"; public static final String UPDATE_METHOD_BY_TILE = "by_tile"; - private String numFrame; + private String frameNumber; private String sceneMD5; private String rendererMD5; private String id; - private String pictureFilename; + private String outputImagePath; private String path; // path inside of the archive private String rendererCommand; private String script; @@ -71,13 +74,13 @@ public class Job { private boolean userBlockJob; private boolean serverBlockJob; private Gui gui; - private Configuration config; + private Configuration configuration; private Log log; public Job(Configuration config_, Gui gui_, Log log_, String id_, String frame_, String path_, boolean use_gpu, String command_, String script_, String sceneMd5_, String rendererMd5_, String name_, String password_, String extras_, boolean synchronous_upload_, String update_method_) { - config = config_; + configuration = config_; id = id_; - numFrame = frame_; + frameNumber = frame_; path = path_; useGPU = use_gpu; rendererCommand = command_; @@ -88,7 +91,7 @@ public class Job { extras = extras_; synchronousUpload = synchronous_upload_; gui = gui_; - pictureFilename = null; + outputImagePath = null; script = script_; updateRenderingStatusMethod = update_method_; askForRendererKill = false; @@ -112,83 +115,7 @@ public class Job { } public String toString() { - return String.format("Job (numFrame '%s' sceneMD5 '%s' rendererMD5 '%s' ID '%s' pictureFilename '%s' jobPath '%s' gpu %s name '%s' extras '%s' updateRenderingStatusMethod '%s' render %s)", numFrame, sceneMD5, rendererMD5, id, pictureFilename, path, useGPU, name, extras, updateRenderingStatusMethod, render); - } - - public String getId() { - return id; - } - - public String getFrameNumber() { - return numFrame; - } - - public String getExtras() { - return extras; - } - - public String getScript() { - return script; - } - - public String getSceneMD5() { - return sceneMD5; - } - - public String getRenderMd5() { - return rendererMD5; - } - - public String getPath() { - return path; - } - - public String getUpdateRenderingStatusMethod() { - return updateRenderingStatusMethod; - } - - public void setAskForRendererKill(boolean val) { - askForRendererKill = val; - } - - public boolean getAskForRendererKill() { - return askForRendererKill; - } - - public void setUserBlockJob(boolean val) { - userBlockJob = val; - } - - public boolean getUserBlockJob() { - return userBlockJob; - } - - public void setServerBlockJob(boolean val) { - serverBlockJob = val; - } - - public boolean getServerBlockJob() { - return serverBlockJob; - } - - public String getRenderCommand() { - return rendererCommand; - } - - public boolean getUseGPU() { - return useGPU; - } - - public String getName() { - return name; - } - - public void setOutputImagePath(String path) { - pictureFilename = path; - } - - public String getOutputImagePath() { - return pictureFilename; + return String.format("Job (numFrame '%s' sceneMD5 '%s' rendererMD5 '%s' ID '%s' pictureFilename '%s' jobPath '%s' gpu %s name '%s' extras '%s' updateRenderingStatusMethod '%s' render %s)", frameNumber, sceneMD5, rendererMD5, id, outputImagePath, path, useGPU, name, extras, updateRenderingStatusMethod, render); } public String getPrefixOutputImage() { @@ -196,7 +123,7 @@ public class Job { } public String getRendererDirectory() { - return config.workingDirectory.getAbsolutePath() + File.separator + rendererMD5; + return configuration.getWorkingDirectory().getAbsolutePath() + File.separator + rendererMD5; } public String getRendererPath() { @@ -204,11 +131,11 @@ public class Job { } public String getRendererArchivePath() { - return config.getStorageDir().getAbsolutePath() + File.separator + rendererMD5 + ".zip"; + return configuration.getStorageDir().getAbsolutePath() + File.separator + rendererMD5 + ".zip"; } public String getSceneDirectory() { - return config.workingDirectory.getAbsolutePath() + File.separator + sceneMD5; + return configuration.getWorkingDirectory().getAbsolutePath() + File.separator + sceneMD5; } public String getScenePath() { @@ -216,15 +143,7 @@ public class Job { } public String getSceneArchivePath() { - return config.workingDirectory.getAbsolutePath() + File.separator + sceneMD5 + ".zip"; - } - - public String getSceneArchivePassword() { - return password; - } - - public boolean simultaneousUploadIsAllowed() { - return synchronousUpload; + return configuration.getWorkingDirectory().getAbsolutePath() + File.separator + sceneMD5 + ".zip"; } public Error.Type render(Observer renderStarted) { @@ -239,8 +158,8 @@ public class Job { + "def hndl(signum, frame):\n" + " pass\n" + "signal.signal(signal.SIGINT, hndl)\n"; - if (getUseGPU() && config.getGPUDevice() != null && config.getComputeMethod() != ComputeType.CPU) { - core_script = "sheepit_set_compute_device(\"" + config.getGPUDevice().getType() + "\", \"GPU\", \"" + config.getGPUDevice().getId() + "\")\n"; + if (isUseGPU() && configuration.getGPUDevice() != null && configuration.getComputeMethod() != ComputeType.CPU) { + core_script = "sheepit_set_compute_device(\"" + configuration.getGPUDevice().getType() + "\", \"GPU\", \"" + configuration.getGPUDevice().getId() + "\")\n"; gui.setComputeMethod("GPU"); } else { @@ -251,10 +170,10 @@ public class Job { core_script += ignore_signal_script; core_script += String.format("bpy.context.scene.render.tile_x = %1$d\nbpy.context.scene.render.tile_y = %1$d\n", getTileSize()); File script_file = null; - String command1[] = getRenderCommand().split(" "); + String command1[] = getRendererCommand().split(" "); int size_command = command1.length + 2; // + 2 for script - if (config.getNbCores() > 0) { // user has specified something + if (configuration.getNbCores() > 0) { // user has specified something size_command += 2; } @@ -262,13 +181,13 @@ public class Job { Map new_env = new HashMap(); - new_env.put("BLENDER_USER_CONFIG", config.workingDirectory.getAbsolutePath().replace("\\", "\\\\")); - new_env.put("CORES", Integer.toString(config.getNbCores())); - new_env.put("PRIORITY", Integer.toString(config.getPriority())); + new_env.put("BLENDER_USER_CONFIG", configuration.getWorkingDirectory().getAbsolutePath().replace("\\", "\\\\")); + new_env.put("CORES", Integer.toString(configuration.getNbCores())); + new_env.put("PRIORITY", Integer.toString(configuration.getPriority())); new_env.put("PYTHONPATH", ""); // make sure blender is using the embedded python, if not it could create "Fatal Python error: Py_Initialize" new_env.put("PYTHONHOME", "");// make sure blender is using the embedded python, if not it could create "Fatal Python error: Py_Initialize" - if (getUseGPU() && config.getGPUDevice() != null && config.getComputeMethod() != ComputeType.CPU && OpenCL.TYPE.equals(config.getGPUDevice().getType())) { + if (isUseGPU() && configuration.getGPUDevice() != null && configuration.getComputeMethod() != ComputeType.CPU && OpenCL.TYPE.equals(configuration.getGPUDevice().getType())) { new_env.put("CYCLES_OPENCL_SPLIT_KERNEL_TEST", "1"); this.updateRenderingStatusMethod = UPDATE_METHOD_BY_TILE; // don't display remaining time } @@ -280,7 +199,7 @@ public class Job { command.add("-P"); try { - script_file = File.createTempFile("script_", "", config.workingDirectory); + script_file = File.createTempFile("script_", "", configuration.getWorkingDirectory()); File file = new File(script_file.getAbsolutePath()); FileWriter txt; txt = new FileWriter(file); @@ -305,13 +224,13 @@ public class Job { case ".e": command.add(getRendererPath()); // the number of cores has to be put after the binary and before the scene arg - if (config.getNbCores() > 0) { + if (configuration.getNbCores() > 0) { command.add("-t"); - command.add(Integer.toString(config.getNbCores())); + command.add(Integer.toString(configuration.getNbCores())); } break; case ".o": - command.add(config.workingDirectory.getAbsolutePath() + File.separator + getPrefixOutputImage()); + command.add(configuration.getWorkingDirectory().getAbsolutePath() + File.separator + getPrefixOutputImage()); break; case ".f": command.add(getFrameNumber()); @@ -327,12 +246,12 @@ public class Job { String line; log.debug(command.toString()); OS os = OS.getOS(); - process.setCoresUsed(config.getNbCores()); + process.setCoresUsed(configuration.getNbCores()); process.start(); getProcessRender().setProcess(os.exec(command, new_env)); BufferedReader input = new BufferedReader(new InputStreamReader(getProcessRender().getProcess().getInputStream())); - if (config.getMaxRenderTime() > 0) { + if (configuration.getMaxRenderTime() > 0) { timerOfMaxRenderTime = new Timer(); timerOfMaxRenderTime.schedule(new TimerTask() { @Override @@ -340,14 +259,14 @@ public class Job { RenderProcess process = getProcessRender(); if (process != null) { long duration = (new Date().getTime() - process.getStartTime() ) / 1000; // in seconds - if (config.getMaxRenderTime() > 0 && duration > config.getMaxRenderTime()) { + if (configuration.getMaxRenderTime() > 0 && duration > configuration.getMaxRenderTime()) { log.debug("Killing render because process duration"); OS.getOS().kill(process.getProcess()); setAskForRendererKill(true); } } } - }, config.getMaxRenderTime() * 1000 + 2000); // +2s to be sure the delay is over + }, configuration.getMaxRenderTime() * 1000 + 2000); // +2s to be sure the delay is over } log.debug("renderer output"); @@ -356,8 +275,8 @@ public class Job { log.debug(line); updateRenderingMemoryPeak(line); - if (config.getMaxMemory() != -1 && process.getMemoryUsed() > config.getMaxMemory()) { - log.debug("Blocking render because process ram used (" + process.getMemoryUsed() + "k) is over user setting (" + config.getMaxMemory() + "k)"); + if (configuration.getMaxMemory() != -1 && process.getMemoryUsed() > configuration.getMaxMemory()) { + log.debug("Blocking render because process ram used (" + process.getMemoryUsed() + "k) is over user setting (" + configuration.getMaxMemory() + "k)"); OS.getOS().kill(process.getProcess()); process.finish(); if (script_file != null) { @@ -416,24 +335,24 @@ public class Job { } }; - File[] files = config.workingDirectory.listFiles(textFilter); - - if (getAskForRendererKill()) { + File[] files = configuration.getWorkingDirectory().listFiles(textFilter); + + if (isAskForRendererKill()) { log.debug("Job::render been asked to end render"); long duration = (new Date().getTime() - process.getStartTime() ) / 1000; // in seconds - if (config.getMaxRenderTime() > 0 && duration > config.getMaxRenderTime()) { - log.debug("Render killed because process duration (" + duration + "s) is over user setting (" + config.getMaxRenderTime() + "s)"); + if (configuration.getMaxRenderTime() > 0 && duration > configuration.getMaxRenderTime()) { + log.debug("Render killed because process duration (" + duration + "s) is over user setting (" + configuration.getMaxRenderTime() + "s)"); return Error.Type.RENDERER_KILLED_BY_USER_OVER_TIME; } if (files.length != 0) { new File(files[0].getAbsolutePath()).delete(); } - if (getServerBlockJob()) { + if (isServerBlockJob()) { return Error.Type.RENDERER_KILLED_BY_SERVER; } - if (getUserBlockJob()) { + if (isUserBlockJob()) { return Error.Type.RENDERER_KILLED_BY_USER; } return Error.Type.RENDERER_KILLED; @@ -449,7 +368,7 @@ public class Job { catch (Exception e) { e.printStackTrace(); } - File crash_file = new File(config.workingDirectory + File.separator + basename + ".crash.txt"); + File crash_file = new File(configuration.getWorkingDirectory() + File.separator + basename + ".crash.txt"); if (crash_file.exists()) { log.error("Job::render crash file found => the renderer crashed"); crash_file.delete(); @@ -844,20 +763,22 @@ public class Job { } public int getTileSize() { - if (config.getTileSize() == -1) { // not set + if (configuration.getTileSize() == -1) { // not set int size = 32; // CPU - GPUDevice gpu = this.config.getGPUDevice(); - if (getUseGPU() && gpu != null) { + GPUDevice gpu = this.configuration.getGPUDevice(); + if (isUseGPU() && gpu != null) { return gpu.getRecommandedTileSize(); } return size; } else { - return config.getTileSize(); + return configuration.getTileSize(); } } public static class renderStartedObservable extends Observable { + + @Getter private boolean isStarted; public renderStartedObservable(Observer observer) { @@ -870,9 +791,5 @@ public class Job { notifyObservers(); isStarted = true; } - - public boolean isStarted() { - return isStarted; - } } } diff --git a/src/com/sheepit/client/Log.java b/src/com/sheepit/client/Log.java index cad35c4..9be2a2b 100644 --- a/src/com/sheepit/client/Log.java +++ b/src/com/sheepit/client/Log.java @@ -89,7 +89,7 @@ public class Log { if (instance == null) { boolean print = false; if (config != null) { - print = config.getPrintLog(); + print = config.isPrintLog(); } instance = new Log(print); } diff --git a/src/com/sheepit/client/RenderProcess.java b/src/com/sheepit/client/RenderProcess.java index 108ea84..ac3bb34 100644 --- a/src/com/sheepit/client/RenderProcess.java +++ b/src/com/sheepit/client/RenderProcess.java @@ -19,82 +19,49 @@ package com.sheepit.client; +import lombok.Data; + import java.util.Date; +@Data public class RenderProcess { - private long start; - private long end; - private int remainingDuration; + private long startTime; + private long endTime; + private int remainingDuration; // in seconds private long memoryUsed; // in kB private int coresUsed; private Process process; public RenderProcess() { process = null; - start = -1; - end = -1; + startTime = -1; + endTime = -1; memoryUsed = 0; coresUsed = 0; remainingDuration = 0; } - public void setMemoryUsed(long val) { - memoryUsed = val; - } - - public long getMemoryUsed() { - return memoryUsed; - } - - public void setCoresUsed(int val) { - coresUsed = val; - } - - public int getCoresUsed() { - return coresUsed; - } - - public long getStartTime() { - return start; - } - - public long getEndTime() { - return end; - } - /** * * @return duration in seconds */ public int getDuration() { - if (start != -1 && end != -1) { - return (int) ((end - start) / 1000); + if (startTime != -1 && endTime != -1) { + return (int) ((endTime - startTime) / 1000); } - else if (start != -1) { - return (int) ((new Date().getTime() - start) / 1000); + else if (startTime != -1) { + return (int) ((new Date().getTime() - startTime) / 1000); } return 0; } - /** - * - * @return duration in seconds - */ - public int getRemainingDuration() { - return remainingDuration; - } - - public void setRemainingDuration(int val) { - remainingDuration = val; - } - public void finish() { - end = new Date().getTime(); + endTime = new Date().getTime(); process = null; } public void start() { - start = new Date().getTime(); + startTime = new Date().getTime(); } public int exitValue() { @@ -118,12 +85,4 @@ public class RenderProcess { } return value; } - - public void setProcess(Process val) { - process = val; - } - - public Process getProcess() { - return process; - } } diff --git a/src/com/sheepit/client/Server.java b/src/com/sheepit/client/Server.java index f170175..24473d5 100644 --- a/src/com/sheepit/client/Server.java +++ b/src/com/sheepit/client/Server.java @@ -188,8 +188,8 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager try { String url_remote = this.base_url + "/server/config.php"; String parameters = String.format("login=%s&password=%s&cpu_family=%s&cpu_model=%s&cpu_model_name=%s&cpu_cores=%s&os=%s&ram=%s&bits=%s&version=%s&hostname=%s&ui=%s&extras=%s", - URLEncoder.encode(this.user_config.login(), "UTF-8"), - URLEncoder.encode(this.user_config.password(), "UTF-8"), + URLEncoder.encode(this.user_config.getLogin(), "UTF-8"), + URLEncoder.encode(this.user_config.getPassword(), "UTF-8"), URLEncoder.encode(os.getCPU().family(), "UTF-8"), URLEncoder.encode(os.getCPU().model(), "UTF-8"), URLEncoder.encode(os.getCPU().name(), "UTF-8"), @@ -407,13 +407,13 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager // blender 2.7x script += "try:\n"; - script += "\tbpy.context.user_preferences.filepaths.temporary_directory = \"" + this.user_config.workingDirectory.getAbsolutePath().replace("\\", "\\\\") + "\"\n"; + script += "\tbpy.context.user_preferences.filepaths.temporary_directory = \"" + this.user_config.getWorkingDirectory().getAbsolutePath().replace("\\", "\\\\") + "\"\n"; script += "except AttributeError:\n"; script += "\tpass\n"; // blender 2.80 script += "try:\n"; - script += "\tbpy.context.preferences.filepaths.temporary_directory = \"" + this.user_config.workingDirectory.getAbsolutePath().replace("\\", "\\\\") + "\"\n"; + script += "\tbpy.context.preferences.filepaths.temporary_directory = \"" + this.user_config.getWorkingDirectory().getAbsolutePath().replace("\\", "\\\\") + "\"\n"; script += "except AttributeError:\n"; script += "\tpass\n"; @@ -917,7 +917,7 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager for (int i = 0; i < ns.getLength(); ++i) { Element file_node = (Element) ns.item(i); if (file_node.hasAttribute("md5") && file_node.hasAttribute("action") && file_node.getAttribute("action").equals("delete")) { - String path = this.user_config.workingDirectory.getAbsolutePath() + File.separatorChar + file_node.getAttribute("md5"); + String path = this.user_config.getWorkingDirectory().getAbsolutePath() + File.separatorChar + file_node.getAttribute("md5"); this.log.debug("Server::handleFileMD5DeleteDocument delete old file " + path); File file_to_delete = new File(path + ".zip"); file_to_delete.delete(); diff --git a/src/com/sheepit/client/SettingsLoader.java b/src/com/sheepit/client/SettingsLoader.java index 5e56fd8..021cd39 100644 --- a/src/com/sheepit/client/SettingsLoader.java +++ b/src/com/sheepit/client/SettingsLoader.java @@ -312,10 +312,10 @@ public class SettingsLoader { loadFile(); - if (config.login().isEmpty() && login != null) { + if (config.getLogin().isEmpty() && login != null) { config.setLogin(login); } - if (config.password().isEmpty() && password != null) { + if (config.getPassword().isEmpty() && password != null) { config.setPassword(password); } @@ -342,11 +342,11 @@ public class SettingsLoader { if (config.getGPUDevice() == null && gpu != null) { GPUDevice device = GPU.getGPUDevice(gpu); if (device != null) { - config.setUseGPU(device); + config.setGPUDevice(device); } } if (config.getNbCores() == -1 && cores != null) { - config.setUseNbCores(Integer.valueOf(cores)); + config.setNbCores(Integer.valueOf(cores)); } if (config.getMaxMemory() == -1 && ram != null) { @@ -357,7 +357,7 @@ public class SettingsLoader { config.setMaxRenderTime(Integer.valueOf(renderTime)); } - if (config.getUserHasSpecifiedACacheDir() == false && cacheDir != null) { + if (config.isUserHasSpecifiedACacheDir() == false && cacheDir != null) { config.setCacheDir(new File(cacheDir)); } diff --git a/src/com/sheepit/client/hardware/gpu/GPU.java b/src/com/sheepit/client/hardware/gpu/GPU.java index 4d23fc8..e7df2d6 100644 --- a/src/com/sheepit/client/hardware/gpu/GPU.java +++ b/src/com/sheepit/client/hardware/gpu/GPU.java @@ -63,7 +63,7 @@ public class GPU { public static List listDevices(Configuration config) { if (devices == null) { - if (config.getDetectGPUs()) { + if (config.isDetectGPUs()) { generate(); } else { diff --git a/src/com/sheepit/client/standalone/Worker.java b/src/com/sheepit/client/standalone/Worker.java index 567afe1..3dddfe8 100644 --- a/src/com/sheepit/client/standalone/Worker.java +++ b/src/com/sheepit/client/standalone/Worker.java @@ -167,13 +167,13 @@ public class Worker { System.err.println("GPU unknown, list of available gpus can be display with --show-gpu"); System.exit(2); } - config.setUseGPU(gpu); + config.setGPUDevice(gpu); } if (request_time != null) { String[] intervals = request_time.split(","); if (intervals != null) { - config.requestTime = new LinkedList>(); + config.setRequestTime(new LinkedList>()); SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm"); for (String interval : intervals) { @@ -192,7 +192,7 @@ public class Worker { } if (start.before(end)) { - config.requestTime.add(new Pair(start, end)); + config.getRequestTime().add(new Pair(start, end)); } else { System.err.println("Error: wrong request time " + times[0] + " is after " + times[1]); @@ -208,7 +208,7 @@ public class Worker { return; } else { - config.setUseNbCores(nb_cores); + config.setNbCores(nb_cores); } if (max_ram != null) { @@ -274,7 +274,7 @@ public class Worker { System.exit(2); } else if (compute_method == ComputeType.CPU) { - config.setUseGPU(null); // remove the GPU + config.setGPUDevice(null); // remove the GPU } config.setComputeMethod(compute_method); @@ -289,7 +289,7 @@ public class Worker { System.err.println("Aborting"); System.exit(2); } - config.setConfigPath(config_file); + config.setConfigFilePath(config_file); new SettingsLoader(config_file).merge(config); } @@ -302,7 +302,7 @@ public class Worker { } switch (type) { case GuiTextOneLine.type: - if (config.getPrintLog()) { + if (config.isPrintLog()) { System.out.println("OneLine UI can not be used if verbose mode is enabled"); System.exit(2); } diff --git a/src/com/sheepit/client/standalone/swing/activity/Settings.java b/src/com/sheepit/client/standalone/swing/activity/Settings.java index ff3c030..9262ee2 100644 --- a/src/com/sheepit/client/standalone/swing/activity/Settings.java +++ b/src/com/sheepit/client/standalone/swing/activity/Settings.java @@ -121,12 +121,12 @@ public class Settings implements Activity { JLabel loginLabel = new JLabel("Username:"); login = new JTextField(); - login.setText(parent.getConfiguration().login()); + login.setText(parent.getConfiguration().getLogin()); login.setColumns(20); login.addKeyListener(new CheckCanStart()); JLabel passwordLabel = new JLabel("Password:"); password = new JPasswordField(); - password.setText(parent.getConfiguration().password()); + password.setText(parent.getConfiguration().getPassword()); password.setColumns(10); password.addKeyListener(new CheckCanStart()); @@ -147,7 +147,7 @@ public class Settings implements Activity { JLabel cacheLabel = new JLabel("Working directory:"); directory_panel.add(cacheLabel); String destination = DUMMY_CACHE_DIR; - if (config.getUserHasSpecifiedACacheDir()) { + if (config.isUserHasSpecifiedACacheDir()) { destination = config.getCacheDirForSettings().getName(); } @@ -388,7 +388,7 @@ public class Settings implements Activity { saveFile = new JCheckBox("Save settings", true); general_panel.add(saveFile); - autoSignIn = new JCheckBox("Auto sign in", config.getAutoSignIn()); + autoSignIn = new JCheckBox("Auto sign in", config.isAutoSignIn()); autoSignIn.addActionListener(new AutoSignInChangeAction()); general_panel.add(autoSignIn); @@ -413,7 +413,7 @@ public class Settings implements Activity { constraints.gridy = currentRow; parent.getContentPane().add(saveButton, constraints); - if (haveAutoStarted == false && config.getAutoSignIn() && checkDisplaySaveButton()) { + if (haveAutoStarted == false && config.isAutoSignIn() && checkDisplaySaveButton()) { // auto start haveAutoStarted = true; new SaveAction().actionPerformed(null); @@ -548,7 +548,7 @@ public class Settings implements Activity { config.setComputeMethod(method); if (selected_gpu != null) { - config.setUseGPU(selected_gpu); + config.setGPUDevice(selected_gpu); } int cpu_cores = -1; @@ -557,7 +557,7 @@ public class Settings implements Activity { } if (cpu_cores > 0) { - config.setUseNbCores(cpu_cores); + config.setNbCores(cpu_cores); } long max_ram = -1; @@ -609,7 +609,7 @@ public class Settings implements Activity { parent.setCredentials(login.getText(), new String(password.getPassword())); String cachePath = null; - if (config.getUserHasSpecifiedACacheDir() && config.getCacheDirForSettings() != null) { + if (config.isUserHasSpecifiedACacheDir() && config.getCacheDirForSettings() != null) { cachePath = config.getCacheDirForSettings().getAbsolutePath(); }