Collection footprint optimization. Sys to Ui event bus memory leak fix.
Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
@@ -1,27 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.filter;
|
||||
|
||||
/**
|
||||
* A filter expression interface definition to implement the UI filter
|
||||
* mechanism. The filter expression can evaluate if e.g. Targets should
|
||||
* currently be added to the target list or if the current enabled filtered will
|
||||
* filter the target and not show the newly created target.
|
||||
*
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface FilterExpression {
|
||||
|
||||
/**
|
||||
* @return {@code true} if the expression evaluate that it should be
|
||||
* filtered and not shown on the UI, otherwise {@code false}
|
||||
*/
|
||||
boolean doFilter();
|
||||
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.filter;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* {@link Filters} which provides the functionality to combine
|
||||
* {@link FilterExpression}s.
|
||||
*
|
||||
*
|
||||
*
|
||||
* @see FilterExpression
|
||||
*
|
||||
*/
|
||||
public final class Filters {
|
||||
|
||||
/**
|
||||
* private.
|
||||
*/
|
||||
private Filters() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Combines the given filter to an or-expression and evaluate them.
|
||||
*
|
||||
* @param expressions
|
||||
* the expressions to combine with an or-filter
|
||||
* @return an or-combined filter expression
|
||||
*/
|
||||
public static FilterExpression or(final List<FilterExpression> expressions) {
|
||||
return or(expressions.toArray(new FilterExpression[expressions.size()]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Combines the given filter to an or-expression and evaluate them.
|
||||
*
|
||||
* @param expressions
|
||||
* the expressions to combine with an or-filter
|
||||
* @return an or-combined filter expression
|
||||
*/
|
||||
public static FilterExpression or(final FilterExpression... expressions) {
|
||||
return new OrFilterExpression(expressions);
|
||||
}
|
||||
|
||||
private static final class OrFilterExpression implements FilterExpression {
|
||||
|
||||
private final FilterExpression[] expresssions;
|
||||
|
||||
private OrFilterExpression(final FilterExpression[] expresssions) {
|
||||
this.expresssions = Arrays.copyOf(expresssions, expresssions.length);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.hawkbit.server.ui.filter.FilterExpression#evaluate()
|
||||
*/
|
||||
@Override
|
||||
public boolean doFilter() {
|
||||
for (final FilterExpression filterExpression : expresssions) {
|
||||
if (filterExpression.doFilter()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.filter.target;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||
import org.eclipse.hawkbit.ui.filter.FilterExpression;
|
||||
|
||||
/**
|
||||
* Checks if custom target filter is applied.
|
||||
*
|
||||
*/
|
||||
public class CustomTargetFilter implements FilterExpression {
|
||||
|
||||
private final Optional<TargetFilterQuery> targetFilterQuery;
|
||||
|
||||
/**
|
||||
* Initialize.
|
||||
*
|
||||
* @param targetFilterQuery
|
||||
* custom target filter applied
|
||||
*/
|
||||
public CustomTargetFilter(final Optional<TargetFilterQuery> targetFilterQuery) {
|
||||
this.targetFilterQuery = targetFilterQuery;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.hawkbit.ui.filter.FilterExpression#doFilter()
|
||||
*/
|
||||
@Override
|
||||
public boolean doFilter() {
|
||||
if (!targetFilterQuery.isPresent()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015 Bosch Software Innovations GmbH, Germany. All rights reserved.
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.filter.target;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
import org.eclipse.hawkbit.ui.filter.FilterExpression;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class TargetSearchTextFilter implements FilterExpression {
|
||||
|
||||
private final Target target;
|
||||
private final String searchTextUpper;
|
||||
|
||||
/**
|
||||
* @param target
|
||||
* the target to check against the search text
|
||||
* @param searchText
|
||||
* the search text check against the given target
|
||||
*/
|
||||
public TargetSearchTextFilter(final Target target, final String searchText) {
|
||||
this.target = target;
|
||||
this.searchTextUpper = searchText.toUpperCase();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.hawkbit.server.ui.filter.FilterExpression#evaluate()
|
||||
*/
|
||||
@Override
|
||||
public boolean doFilter() {
|
||||
return !(descriptionIgnoreCase() || nameIgnoreCase() || controllerIdIgnoreCase() || ipAddressIgnoreCase());
|
||||
}
|
||||
|
||||
private boolean descriptionIgnoreCase() {
|
||||
if (target.getDescription() == null) {
|
||||
return false;
|
||||
}
|
||||
return target.getDescription().toUpperCase().contains(searchTextUpper);
|
||||
}
|
||||
|
||||
private boolean nameIgnoreCase() {
|
||||
if (target.getName() == null) {
|
||||
return false;
|
||||
}
|
||||
return target.getName().toUpperCase().contains(searchTextUpper);
|
||||
}
|
||||
|
||||
private boolean controllerIdIgnoreCase() {
|
||||
return target.getControllerId().toUpperCase().contains(searchTextUpper);
|
||||
}
|
||||
|
||||
private boolean ipAddressIgnoreCase() {
|
||||
final URI targetAddress = target.getTargetInfo().getAddress();
|
||||
if (targetAddress == null || targetAddress.getHost() == null) {
|
||||
return false;
|
||||
}
|
||||
return targetAddress.getHost().toUpperCase().contains(searchTextUpper);
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015 Bosch Software Innovations GmbH, Germany. All rights reserved.
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.filter.target;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
|
||||
import org.eclipse.hawkbit.ui.filter.FilterExpression;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class TargetStatusFilter implements FilterExpression {
|
||||
|
||||
private final List<TargetUpdateStatus> targetUpdateStatus;
|
||||
|
||||
/**
|
||||
* @param target
|
||||
* the target to check the update status against
|
||||
* @param updateStatus
|
||||
* the target update status to check against the given target
|
||||
*/
|
||||
public TargetStatusFilter(final List<TargetUpdateStatus> updateStatus) {
|
||||
this.targetUpdateStatus = updateStatus;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.hawkbit.server.ui.filter.FilterExpression#evaluate()
|
||||
*/
|
||||
@Override
|
||||
public boolean doFilter() {
|
||||
if (targetUpdateStatus.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015 Bosch Software Innovations GmbH, Germany. All rights reserved.
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.filter.target;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
import org.eclipse.hawkbit.ui.filter.FilterExpression;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class TargetTagFilter implements FilterExpression {
|
||||
|
||||
private final Target target;
|
||||
private final Collection<String> tags;
|
||||
private final boolean noTag;
|
||||
|
||||
/**
|
||||
* @param target
|
||||
* the target to check the filter against
|
||||
* @param tags
|
||||
* the tags to check the target against it
|
||||
* @param noTag
|
||||
* {@code true} indicates that targets which have no tags should
|
||||
* not be filtered, otherwise {@code false}
|
||||
*/
|
||||
public TargetTagFilter(final Target target, final Collection<String> tags, final boolean noTag) {
|
||||
this.target = target;
|
||||
this.tags = tags;
|
||||
this.noTag = noTag;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.hawkbit.server.ui.filter.FilterExpression#evaluate()
|
||||
*/
|
||||
@Override
|
||||
public boolean doFilter() {
|
||||
final List<String> targetTags = target.getTags().stream().map(targetTag -> targetTag.getName())
|
||||
.collect(Collectors.toList());
|
||||
if (targetTags.isEmpty() || (noTag && targetTags.isEmpty())) {
|
||||
return false;
|
||||
}
|
||||
return !CollectionUtils.containsAny(targetTags, tags);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user