FileSaveRequestHandler.java
5.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.scene7.is.provider.RequestTypeEnum
* com.scene7.is.provider.RequestTypeSpec
* com.scene7.is.provider.catalog.Catalog
* com.scene7.is.provider.catalog.CatalogException
* com.scene7.is.provider.catalog.ObjectRecord
* com.scene7.is.sleng.CacheEnum
* com.scene7.is.sleng.FXGServer
* com.scene7.is.sleng.ImageAccess
* com.scene7.is.sleng.ImageAccessException
* com.scene7.is.sleng.ImageServer
* com.scene7.is.util.AbstractPath
* com.scene7.is.util.error.Scaffold
* com.scene7.is.util.text.ParameterException
* com.scene7.is.util.text.ParsingException
* org.jetbrains.annotations.NotNull
*/
package com.scene7.is.ps.provider;
import com.scene7.is.provider.RequestTypeEnum;
import com.scene7.is.provider.RequestTypeSpec;
import com.scene7.is.provider.catalog.Catalog;
import com.scene7.is.provider.catalog.CatalogException;
import com.scene7.is.provider.catalog.ObjectRecord;
import com.scene7.is.ps.provider.IZoomException;
import com.scene7.is.ps.provider.ModifierSet;
import com.scene7.is.ps.provider.PropertiesHandler;
import com.scene7.is.ps.provider.Request;
import com.scene7.is.ps.provider.SaveToFileRequestHandler;
import com.scene7.is.ps.provider.SlengCompiler;
import com.scene7.is.ps.provider.Util;
import com.scene7.is.ps.provider.defs.ModifierEnum;
import com.scene7.is.sleng.CacheEnum;
import com.scene7.is.sleng.FXGServer;
import com.scene7.is.sleng.ImageAccess;
import com.scene7.is.sleng.ImageAccessException;
import com.scene7.is.sleng.ImageServer;
import com.scene7.is.util.AbstractPath;
import com.scene7.is.util.error.Scaffold;
import com.scene7.is.util.text.ParameterException;
import com.scene7.is.util.text.ParsingException;
import java.util.HashMap;
import java.util.Map;
import org.jetbrains.annotations.NotNull;
class FileSaveRequestHandler
extends PropertiesHandler {
@NotNull
private final ImageServer server;
@NotNull
private final FXGServer fxgServer;
FileSaveRequestHandler(@NotNull ImageServer server, @NotNull FXGServer fxgServer) {
this.server = server;
this.fxgServer = fxgServer;
}
@Override
public Map<String, Object> getProperties(Request request) throws ImageAccessException, IZoomException, CatalogException, ParsingException {
ModifierSet attr = request.getGlobalAttributes();
try {
RequestTypeEnum requestType = attr.getOrDie(ModifierEnum.REQ).type;
if (requestType == RequestTypeEnum.SAVE_INIT) {
HashMap<String, Object> properties = new HashMap<String, Object>();
String name = attr.get(ModifierEnum.NAME);
if (!SaveToFileRequestHandler.isValidName(name)) {
throw new IZoomException(IZoomException.ILLEGAL_PATH, name, null);
}
SlengCompiler compiler = new SlengCompiler(this.server, true, false, false);
byte[] code = Util.doOptimize(request) ? compiler.compileOptimizedRequest(this.fxgServer, request) : compiler.compileRequest(request);
Catalog catalog = request.getRecord().getCatalog();
ObjectRecord record = catalog.getRecord(name);
AbstractPath catalogPath = record.getCatalog().getPath();
String subPath = record.getName();
String fileName = new AbstractPath(catalogPath, subPath).getPath();
String saveId = this.saveInitAsynchronous(code, fileName);
properties.put("context.id", saveId);
return properties;
}
if (!attr.contains(ModifierEnum.ID)) {
throw new ParameterException(1, ModifierEnum.ID.toString(), null, null);
}
String saveId = attr.getOrDie(ModifierEnum.ID);
if (requestType == RequestTypeEnum.SAVE_STATUS) {
return this.server.saveProgress(saveId);
}
if (requestType == RequestTypeEnum.SAVE_RELEASE) {
this.server.saveRelease(saveId);
return new HashMap<String, Object>();
}
if (requestType == RequestTypeEnum.SAVE_CANCEL) {
this.server.saveCancel(saveId);
return new HashMap<String, Object>();
}
throw Scaffold.error((Object)requestType);
}
catch (ParameterException e) {
IZoomException wrapper = new IZoomException(IZoomException.INVALID_REQUEST, "image handler", (Throwable)e);
wrapper.setProperty("message", e.getMessage());
throw wrapper;
}
}
/*
* WARNING - Removed try catching itself - possible behaviour change.
*/
private String saveInitAsynchronous(byte[] slengCode, String fileName) throws ImageAccessException {
ImageAccess imageAccess = this.server.getImageAccess(this.fxgServer, CacheEnum.ON, slengCode);
try {
String string = this.server.saveInit(imageAccess, fileName);
return string;
}
finally {
imageAccess.dispose();
}
}
}