Skip to content

Commit b55ea12

Browse files
Improve generics around QueryPropertyChange, other misc cleanup (#7009)
1 parent d8e395a commit b55ea12

24 files changed

+86
-169
lines changed

api/src/org/labkey/api/query/AbstractQueryChangeListener.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ public void queryCreated(User user, Container container, ContainerFilter scope,
4040
protected abstract void queryCreated(User user, Container container, ContainerFilter scope, SchemaKey schema, String query);
4141

4242
@Override
43-
public void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull QueryProperty property, @NotNull Collection<QueryPropertyChange> changes)
43+
public void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull QueryProperty property, @NotNull Collection<QueryPropertyChange<?>> changes)
4444
{
45-
for (QueryPropertyChange change : changes)
45+
for (QueryPropertyChange<?> change : changes)
4646
queryChanged(user, container, scope, schema, change);
4747
}
4848

49-
protected abstract void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, QueryPropertyChange change);
49+
protected abstract void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, QueryPropertyChange<?> change);
5050

5151
@Override
5252
public void queryDeleted(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull Collection<String> queries)

api/src/org/labkey/api/query/QueryChangeListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public interface QueryChangeListener
6161
* @param property The QueryProperty that has changed.
6262
* @param changes The set of change events. Each QueryPropertyChange is associated with a single table or query.
6363
*/
64-
void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull QueryProperty property, @NotNull Collection<QueryPropertyChange> changes);
64+
void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull QueryProperty property, @NotNull Collection<QueryPropertyChange<?>> changes);
6565

6666
/**
6767
* This method is called when a set of tables or queries are deleted from the given container and schema.

api/src/org/labkey/api/query/QueryDefinition.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ public interface QueryDefinition
155155
* TableQueryDefinition and file-based queries cannot be deleted.
156156
* Fires the {@link QueryChangeListener#queryChanged(User, Container, ContainerFilter, SchemaKey, QueryProperty, Collection)} event.
157157
*/
158-
Collection<QueryPropertyChange> save(User user, Container container) throws SQLException;
159-
Collection<QueryPropertyChange> save(User user, Container container, boolean fireChangeEvent) throws SQLException;
158+
Collection<QueryPropertyChange<?>> save(User user, Container container) throws SQLException;
159+
Collection<QueryPropertyChange<?>> save(User user, Container container, boolean fireChangeEvent) throws SQLException;
160160

161161
/**
162162
* Delete the QueryDefinition.

api/src/org/labkey/api/query/QueryService.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -409,11 +409,11 @@ enum AuditAction
409409
"%s was inserted or updated.",
410410
"inserted or updated");
411411

412-
String _commentDetailed;
413-
String _commentDetailedFormat;
414-
String _commentSummary;
415-
String _verbPastTense;
416-
static String vowels = "aeiou";
412+
final String _commentDetailed;
413+
final String _commentDetailedFormat;
414+
final String _commentSummary;
415+
final String _verbPastTense;
416+
final static String vowels = "aeiou";
417417

418418
AuditAction(String commentSummary, String commentDetailedFormat, String verbPastTense)
419419
{
@@ -476,7 +476,7 @@ public String getDefaultCommentSummary()
476476

477477
Collection<String> getQueryDependents(User user, Container container, ContainerFilter scope, SchemaKey schema, Collection<String> queries);
478478
void fireQueryCreated(User user, Container container, ContainerFilter scope, SchemaKey schema, Collection<String> queries);
479-
void fireQueryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, QueryChangeListener.QueryProperty property, Collection<QueryChangeListener.QueryPropertyChange> changes);
479+
void fireQueryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, QueryChangeListener.QueryProperty property, Collection<QueryChangeListener.QueryPropertyChange<?>> changes);
480480
void fireQueryDeleted(User user, Container container, ContainerFilter scope, SchemaKey schema, Collection<String> queries);
481481

482482

api/src/org/labkey/api/reader/BufferedReader.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ We use this implementation as it grows its buffer incrementally instead of alloc
3535
*/
3636

3737
import org.jetbrains.annotations.NotNull;
38+
import org.labkey.api.util.IntegerUtils;
3839

3940
import java.io.IOException;
4041
import java.io.Reader;
@@ -476,7 +477,7 @@ public long skip(long amount) throws IOException {
476477
return 0;
477478
}
478479
if (count - pos >= amount) {
479-
pos += amount;
480+
pos = IntegerUtils.asInteger(pos + amount);
480481
return amount;
481482
}
482483

@@ -487,7 +488,7 @@ public long skip(long amount) throws IOException {
487488
return read;
488489
}
489490
if (count - pos >= amount - read) {
490-
pos += amount - read;
491+
pos = IntegerUtils.asInteger(pos + amount - read);
491492
return amount;
492493
}
493494
// Couldn't get all the characters, skip what we read

api/src/org/labkey/api/reports/report/ReportDescriptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,7 @@ protected String adjustPropertyValue(@Nullable FolderExportContext context, Stri
588588

589589
// Let subclasses decide how they need to handle query/schema name changes, return true if changes have been made to the
590590
// descriptor. It is up to the caller to save the report changes
591-
public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.QueryPropertyChange> changes, User user, Container container, boolean isSchemaUpdate)
591+
public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.QueryPropertyChange<?>> changes, User user, Container container, boolean isSchemaUpdate)
592592
{
593593
return false;
594594
}

api/src/org/labkey/api/visualization/GenericChartReportDescriptor.java

Lines changed: 2 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,13 @@
1717

1818
import org.json.JSONObject;
1919
import org.labkey.api.data.Container;
20-
import org.labkey.api.data.DisplayColumn;
21-
import org.labkey.api.data.TableInfo;
2220
import org.labkey.api.exp.property.DomainProperty;
23-
import org.labkey.api.query.CustomView;
2421
import org.labkey.api.query.QueryChangeListener;
25-
import org.labkey.api.query.QueryDefinition;
26-
import org.labkey.api.query.QueryException;
27-
import org.labkey.api.query.QueryService;
28-
import org.labkey.api.query.QuerySettings;
29-
import org.labkey.api.query.QueryView;
30-
import org.labkey.api.query.UserSchema;
31-
import org.labkey.api.query.ValidationException;
3222
import org.labkey.api.reports.model.ReportPropsManager;
3323
import org.labkey.api.reports.report.view.ReportUtil;
3424
import org.labkey.api.security.User;
3525
import org.labkey.api.util.Pair;
36-
import org.labkey.api.view.ViewContext;
37-
import org.labkey.api.writer.ContainerUser;
3826

39-
import java.util.ArrayList;
4027
import java.util.Collection;
4128
import java.util.HashMap;
4229
import java.util.List;
@@ -83,7 +70,7 @@ public Map<String, Object> getReportProps()
8370
}
8471

8572
@Override
86-
public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.QueryPropertyChange> changes, User user, Container container, boolean isSchemaUpdate)
73+
public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.QueryPropertyChange<?>> changes, User user, Container container, boolean isSchemaUpdate)
8774
{
8875
if (getJSON() != null)
8976
{
@@ -95,7 +82,7 @@ public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.Qu
9582
String schemaName = queryJson.optString("schemaName", null);
9683
if ((queryName != null && !isSchemaUpdate) || (schemaName != null && isSchemaUpdate))
9784
{
98-
for (QueryChangeListener.QueryPropertyChange qpc : changes)
85+
for (QueryChangeListener.QueryPropertyChange<?> qpc : changes)
9986
{
10087
if (isSchemaUpdate)
10188
{
@@ -204,64 +191,4 @@ private String updateJSON(String json)
204191

205192
return newJson.toString();
206193
}
207-
208-
public QueryView getSourceQueryView(ViewContext viewContext, String schemaName, String queryName, String viewName, String dataRegionName) throws ValidationException
209-
{
210-
UserSchema schema = QueryService.get().getUserSchema(viewContext.getUser(), viewContext.getContainer(), schemaName);
211-
if (schema == null)
212-
{
213-
throw new ValidationException("Invalid schema name: " + schemaName + ". ");
214-
}
215-
QuerySettings settings = schema.getSettings(viewContext, dataRegionName == null ? "query" : dataRegionName, queryName, viewName);
216-
QueryView queryView = schema.createView(viewContext, settings, null);
217-
if (queryView == null)
218-
{
219-
throw new ValidationException("Invalid query/view.");
220-
}
221-
222-
return queryView;
223-
}
224-
225-
// TODO: Delete?
226-
private List<DisplayColumn> getDisplayColumns(ContainerUser context, String schemaName, String queryName, String viewName) throws ValidationException
227-
{
228-
UserSchema schema = QueryService.get().getUserSchema(context.getUser(), context.getContainer(), schemaName);
229-
if (schema == null)
230-
{
231-
throw new ValidationException("Invalid schema name: " + schemaName + ". ");
232-
}
233-
QueryDefinition queryDefinition = schema.getQueryDef(queryName);
234-
if (queryDefinition == null)
235-
queryDefinition = QueryService.get().createQueryDefForTable(schema, queryName);
236-
237-
if (queryDefinition != null)
238-
{
239-
List<QueryException> errors = new ArrayList<>();
240-
TableInfo tableInfo = queryDefinition.getTable(schema, errors, true);
241-
if (tableInfo != null)
242-
{
243-
if (errors.isEmpty())
244-
{
245-
CustomView customView = QueryService.get().getCustomView(context.getUser(), context.getContainer(), null, schemaName, queryName, viewName);
246-
return queryDefinition.getDisplayColumns(customView, tableInfo);
247-
}
248-
else
249-
{
250-
StringBuilder sb = new StringBuilder();
251-
String delim = "";
252-
253-
for (QueryException error : errors)
254-
{
255-
sb.append(delim).append(error.getMessage());
256-
delim = "\n";
257-
}
258-
throw new ValidationException("Unable to get table or query: " + sb);
259-
}
260-
}
261-
else
262-
throw new ValidationException("Unable to create the source table: " + queryName + " it may no longer exist, or you don't have access to it.");
263-
}
264-
else
265-
throw new ValidationException("Unable to get a query definition for table : " + queryName);
266-
}
267194
}

api/src/org/labkey/api/visualization/TimeChartReportDescriptor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ private void convertPTIDSinGroups(JSONObject json, Map<String, String> alternate
173173
}
174174

175175
@Override
176-
public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.QueryPropertyChange> changes, User user, Container container, boolean isSchemaUpdate)
176+
public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.QueryPropertyChange<?>> changes, User user, Container container, boolean isSchemaUpdate)
177177
{
178178
if (getJSON() != null)
179179
{
@@ -188,7 +188,7 @@ public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.Qu
188188

189189
// most property updates only care about the query name old value string and new value string
190190
Map<String, String> nameChangeMap = new HashMap<>();
191-
for (QueryChangeListener.QueryPropertyChange qpc : changes)
191+
for (QueryChangeListener.QueryPropertyChange<?> qpc : changes)
192192
{
193193
nameChangeMap.put((String)qpc.getOldValue(), (String)qpc.getNewValue());
194194
}
@@ -331,13 +331,13 @@ public boolean updateSchemaQueryNameReferences(Collection<QueryChangeListener.Qu
331331
return false;
332332
}
333333

334-
private boolean updateJSONObjectQueryNameReference(JSONObject json, boolean isSchemaChange, Collection<QueryChangeListener.QueryPropertyChange> changes)
334+
private boolean updateJSONObjectQueryNameReference(JSONObject json, boolean isSchemaChange, Collection<QueryChangeListener.QueryPropertyChange<?>> changes)
335335
{
336336
String propName = isSchemaChange ? "schemaName" : "queryName";
337337
String oldValue = json.optString(propName, null);
338338
if (oldValue != null)
339339
{
340-
for (QueryChangeListener.QueryPropertyChange qpc : changes)
340+
for (QueryChangeListener.QueryPropertyChange<?> qpc : changes)
341341
{
342342
if (oldValue.equals(qpc.getOldValue()))
343343
{

experiment/src/org/labkey/experiment/ExperimentQueryChangeListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ private List<ExpDataClassImpl> getRenamedDataClasses(Container container, String
6363
}
6464

6565
@Override
66-
public void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull QueryProperty property, @NotNull Collection<QueryPropertyChange> changes)
66+
public void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull QueryProperty property, @NotNull Collection<QueryPropertyChange<?>> changes)
6767
{
6868
boolean isSamples = schema.toString().equalsIgnoreCase("samples");
6969
boolean isData = schema.toString().equalsIgnoreCase("exp.data");
@@ -74,7 +74,7 @@ public void queryChanged(User user, Container container, ContainerFilter scope,
7474
return;
7575

7676
Map<String, String> queryNameChangeMap = new CaseInsensitiveHashMap<>();
77-
for (QueryPropertyChange qpc : changes)
77+
for (QueryPropertyChange<?> qpc : changes)
7878
{
7979
String oldVal = (String)qpc.getOldValue();
8080
String newVal = (String)qpc.getNewValue();

experiment/src/org/labkey/experiment/PropertyQueryChangeListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ private void updateLookupSchema(String newValue, String oldSchema, Container con
6161
}
6262

6363
@Override
64-
public void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull QueryProperty property, @NotNull Collection<QueryPropertyChange> changes)
64+
public void queryChanged(User user, Container container, ContainerFilter scope, SchemaKey schema, @NotNull QueryProperty property, @NotNull Collection<QueryPropertyChange<?>> changes)
6565
{
6666
// is there any other schema change other than assay renaming?
6767
boolean isSchemaChange = schema.toString().toLowerCase().startsWith("assay.general.");
6868

6969
Map<String, String> queryNameChangeMap = new CaseInsensitiveHashMap<>();
70-
for (QueryPropertyChange qpc : changes)
70+
for (QueryPropertyChange<?> qpc : changes)
7171
{
7272
String oldVal = qpc.getOldValue() != null ? qpc.getOldValue().toString() : null;
7373
String newVal = qpc.getNewValue() != null ? qpc.getNewValue().toString() : null;

0 commit comments

Comments
 (0)