2024-10-09 22:21:57 +03:00
|
|
|
|
package _VisualDVM.Repository.Component;
|
2024-10-07 14:22:52 +03:00
|
|
|
|
import Common.CommonConstants;
|
2024-10-11 00:00:30 +03:00
|
|
|
|
import Common.Utils.Utils_;
|
2024-10-09 22:01:19 +03:00
|
|
|
|
import _VisualDVM.Constants;
|
2024-10-07 00:58:29 +03:00
|
|
|
|
import Common.Database.Objects.DBObject;
|
|
|
|
|
|
import _VisualDVM.Global;
|
2024-10-08 23:45:06 +03:00
|
|
|
|
import Common.Visual.Windows.Dialog.VFileChooser;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import Common.Utils.TextLog;
|
2024-10-09 22:01:19 +03:00
|
|
|
|
import _VisualDVM.Utils;
|
2024-10-10 23:57:36 +03:00
|
|
|
|
import Common.Passes.PassException;
|
2024-10-07 17:46:38 +03:00
|
|
|
|
import Common.Utils.Loggable;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
|
import java.nio.file.Files;
|
|
|
|
|
|
import java.nio.file.Paths;
|
|
|
|
|
|
import java.nio.file.StandardCopyOption;
|
|
|
|
|
|
public abstract class Component extends DBObject implements Loggable {
|
2023-11-14 20:08:19 +03:00
|
|
|
|
public String date_text = Constants.dateNaN;
|
2024-10-07 14:22:52 +03:00
|
|
|
|
public long version = CommonConstants.Nan;
|
|
|
|
|
|
public long actual_version = CommonConstants.Nan;
|
|
|
|
|
|
public long minimal_version = CommonConstants.Nan;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//--
|
|
|
|
|
|
public String code = "";
|
|
|
|
|
|
public String actual_code = "";
|
|
|
|
|
|
public boolean needs_update_minimal_version = false;
|
|
|
|
|
|
private ComponentState state;
|
|
|
|
|
|
public abstract ComponentType getComponentType();
|
|
|
|
|
|
VFileChooser fileChooser = null; ///для ручной установки.
|
|
|
|
|
|
public VFileChooser getFileChooser() {
|
|
|
|
|
|
return (fileChooser == null) ? (fileChooser = new VFileChooser("выбор файла для компонента " +
|
2024-10-11 00:00:30 +03:00
|
|
|
|
Utils_.Brackets(getComponentType().getDescription()), Utils_.getExtension(getFile())))
|
2023-09-17 22:13:42 +03:00
|
|
|
|
: fileChooser;
|
|
|
|
|
|
}
|
|
|
|
|
|
//--
|
|
|
|
|
|
public String getVersionText() {
|
|
|
|
|
|
return String.valueOf(version);
|
|
|
|
|
|
}
|
|
|
|
|
|
public void CheckIfNeedsUpdateOrPublish() {
|
2024-10-07 14:22:52 +03:00
|
|
|
|
if (actual_version != CommonConstants.Nan) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
if (version < minimal_version) setState(ComponentState.Old_version);
|
|
|
|
|
|
else {
|
|
|
|
|
|
ComponentState new_state =
|
|
|
|
|
|
(actual_version > version) ? ComponentState.Needs_update : (
|
|
|
|
|
|
(actual_version < version) ? ComponentState.Needs_publish : ComponentState.Actual);
|
|
|
|
|
|
setState(new_state);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public void InitialVersionCheck() {
|
|
|
|
|
|
setState(ComponentState.Undefined);
|
|
|
|
|
|
if (getFile().exists()) {
|
|
|
|
|
|
GetVersionInfo();
|
2024-10-07 14:22:52 +03:00
|
|
|
|
if (version == CommonConstants.Nan)
|
2023-09-17 22:13:42 +03:00
|
|
|
|
setState(ComponentState.Unknown_version);
|
|
|
|
|
|
} else setState(ComponentState.Not_found);
|
|
|
|
|
|
}
|
|
|
|
|
|
public boolean CanBeUpdated() {
|
|
|
|
|
|
return state != ComponentState.Not_found && state != ComponentState.Unknown_version && state != ComponentState.Old_version;
|
|
|
|
|
|
}
|
|
|
|
|
|
public void GetVersionInfo() {
|
|
|
|
|
|
}
|
|
|
|
|
|
public void unpackActualVersion(String v_string) {
|
|
|
|
|
|
actual_version = Long.parseLong(v_string);
|
|
|
|
|
|
}
|
|
|
|
|
|
public void unpackMinimalVersion(String v_string) {
|
|
|
|
|
|
minimal_version = Long.parseLong(v_string);
|
|
|
|
|
|
}
|
|
|
|
|
|
public void ReplaceOldFile() throws Exception {
|
|
|
|
|
|
Utils.delete_with_check(getFile());
|
|
|
|
|
|
//-скопировать файл
|
|
|
|
|
|
Files.move(getNewFile().toPath(), getFile().toPath(), StandardCopyOption.REPLACE_EXISTING);
|
|
|
|
|
|
//удалить новый файл.
|
|
|
|
|
|
Utils.delete_with_check(getNewFile());
|
|
|
|
|
|
}
|
|
|
|
|
|
public void Update() throws Exception {
|
|
|
|
|
|
if (!getNewFile().setExecutable(true)) throw new PassException("Не удалось разрешить файл\n" +
|
|
|
|
|
|
getNewFile() +
|
|
|
|
|
|
"\nна выполнение");
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public boolean isVisible() {
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public Object getPK() {
|
|
|
|
|
|
return getComponentType();
|
|
|
|
|
|
}
|
|
|
|
|
|
public boolean isValidVersion(TextLog Log, String desc) {
|
2024-10-07 14:22:52 +03:00
|
|
|
|
if (version == CommonConstants.Nan) {
|
2024-10-11 00:00:30 +03:00
|
|
|
|
Log.Writeln_("Не определена версия " + desc + " компонента " + Utils_.Brackets(getComponentType().getDescription()));
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
//------------------>>>
|
|
|
|
|
|
public String getHome() {
|
|
|
|
|
|
return Global.ComponentsDirectory.getAbsolutePath();
|
|
|
|
|
|
}
|
|
|
|
|
|
public String getFileName() {
|
|
|
|
|
|
return "";
|
|
|
|
|
|
}
|
|
|
|
|
|
public String getNewFileName() {
|
|
|
|
|
|
return "";
|
|
|
|
|
|
}
|
|
|
|
|
|
public String getBackUpFileName() {
|
|
|
|
|
|
return getComponentType().toString() + "_" + version;
|
|
|
|
|
|
}
|
|
|
|
|
|
public File getFile() {
|
|
|
|
|
|
return Paths.get(getHome(), getFileName()).toFile();
|
|
|
|
|
|
}
|
|
|
|
|
|
public File getNewFile() {
|
|
|
|
|
|
return Paths.get(getHome(), getNewFileName()).toFile();
|
|
|
|
|
|
}
|
|
|
|
|
|
public File getBackUpFile() {
|
|
|
|
|
|
return Paths.get(Global.BackUpsDirectory.getAbsolutePath(), getBackUpFileName()).toFile();
|
|
|
|
|
|
}
|
|
|
|
|
|
public ComponentState getState() {
|
|
|
|
|
|
return state;
|
|
|
|
|
|
}
|
|
|
|
|
|
public void setState(ComponentState state_in) {
|
|
|
|
|
|
state = state_in;
|
|
|
|
|
|
}
|
|
|
|
|
|
public String getAssemblyCommand() {
|
|
|
|
|
|
return "";
|
|
|
|
|
|
}
|
|
|
|
|
|
public File getAssemblyFile() {
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public String getLogHomePath() {
|
|
|
|
|
|
return Global.ComponentsDirectory.getAbsolutePath();
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public String getLogName() {
|
|
|
|
|
|
return getComponentType().toString();
|
|
|
|
|
|
}
|
|
|
|
|
|
public boolean isNecessary() {
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|