/* * Copyright 2017 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.screens.library.client.util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.enterprise.context.Dependent; import javax.inject.Inject; import org.jboss.errai.ioc.client.api.ManagedInstance; import org.kie.workbench.common.screens.explorer.client.utils.Classifier; import org.kie.workbench.common.screens.explorer.client.utils.Utils; import org.kie.workbench.common.widgets.client.handlers.NewProjectHandler; import org.kie.workbench.common.widgets.client.handlers.NewResourceHandler; import org.uberfire.backend.vfs.Path; import org.uberfire.client.workbench.type.ClientResourceType; @Dependent public class ResourceUtils { private Classifier classifier; private ManagedInstance<NewResourceHandler> newResourceHandlers; @Inject public ResourceUtils(final Classifier classifier, final ManagedInstance<NewResourceHandler> newResourceHandlers) { this.classifier = classifier; this.newResourceHandlers = newResourceHandlers; } public String getBaseFileName(final Path path) { final ClientResourceType resourceType = classifier.findResourceType(path); final String baseName = Utils.getBaseFileName(path.getFileName(), resourceType.getSuffix()); return baseName; } public static boolean isProjectHandler(final NewResourceHandler handler) { return handler instanceof NewProjectHandler; } public static boolean isDefaultProjectHandler(final NewResourceHandler handler) { return handler.getClass().getName().contains("org.kie.workbench.common.screens.projecteditor.client.handlers.NewProjectHandler"); } public static boolean isPackageHandler(final NewResourceHandler handler) { return handler.getClass().getName().contains("NewPackageHandler"); } public static boolean isUploadHandler(final NewResourceHandler handler) { return handler.getClass().getName().contains("NewFileUploader"); } public List<NewResourceHandler> getOrderedNewResourceHandlers() { return getNewResourceHandlers(NEW_RESOURCE_HANDLER_COMPARATOR_BY_ORDER); } public List<NewResourceHandler> getAlphabeticallyOrderedNewResourceHandlers() { return getNewResourceHandlers(NEW_RESOURCE_HANDLER_COMPARATOR_BY_ALPHABETICAL_ORDER); } private List<NewResourceHandler> getNewResourceHandlers(final Comparator<NewResourceHandler> sortComparator) { final List<NewResourceHandler> sortedNewResourceHandlers = new ArrayList<>(); getNewResourceHandlers().forEach(sortedNewResourceHandlers::add); Collections.sort(sortedNewResourceHandlers, sortComparator); return sortedNewResourceHandlers; } public static final Comparator<NewResourceHandler> NEW_RESOURCE_HANDLER_COMPARATOR_BY_ORDER = (o1, o2) -> { if (o1.order() < o2.order()) { return -1; } else if (o1.order() > o2.order()) { return 1; } else { return o1.getDescription().compareToIgnoreCase(o2.getDescription()); } }; public static final Comparator<NewResourceHandler> NEW_RESOURCE_HANDLER_COMPARATOR_BY_ALPHABETICAL_ORDER = (o1, o2) -> o1.getDescription().compareToIgnoreCase(o2.getDescription()); Iterable<NewResourceHandler> getNewResourceHandlers() { return newResourceHandlers; } }