org.jbpm.services.task.utils.CollectionUtils Maven / Gradle / Ivy
/*
* 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.jbpm.services.task.utils;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.jbpm.services.task.impl.model.AttachmentImpl;
import org.jbpm.services.task.impl.model.BooleanExpressionImpl;
import org.jbpm.services.task.impl.model.CommentImpl;
import org.jbpm.services.task.impl.model.DeadlineImpl;
import org.jbpm.services.task.impl.model.EmailNotificationImpl;
import org.jbpm.services.task.impl.model.EscalationImpl;
import org.jbpm.services.task.impl.model.GroupImpl;
import org.jbpm.services.task.impl.model.I18NTextImpl;
import org.jbpm.services.task.impl.model.NotificationImpl;
import org.jbpm.services.task.impl.model.ReassignmentImpl;
import org.jbpm.services.task.impl.model.UserImpl;
import org.kie.api.task.model.Attachment;
import org.kie.api.task.model.Comment;
import org.kie.api.task.model.Group;
import org.kie.api.task.model.I18NText;
import org.kie.api.task.model.OrganizationalEntity;
import org.kie.api.task.model.User;
import org.kie.internal.task.api.model.BooleanExpression;
import org.kie.internal.task.api.model.Deadline;
import org.kie.internal.task.api.model.Escalation;
import org.kie.internal.task.api.model.Notification;
import org.kie.internal.task.api.model.NotificationType;
import org.kie.internal.task.api.model.Reassignment;
public class CollectionUtils {
public static boolean equals(List list1, List list2) {
if ( list1 == list2 ) {
//both are the same
return true;
}
if ( list1 == null || list2 == null ) {
// we know both aren't null, so if one is null them obviously false
return false;
}
if ( list1.size() != list2.size() ) {
return false;
}
if ( list1.isEmpty() ) {
return true;
}
ArrayList> arr = new ArrayList<>(list2);
for ( Object obj : list1 ) {
if ( !arr.remove( obj ) ) {
return false;
}
}
return true;
}
public static int hashCode(List list) {
if ( list == null ) {
return 0;
}
if ( list.isEmpty() ) {
return 1;
}
ArrayList> tmp = new ArrayList<>(list);
Collections.sort(tmp, (o1, o2) -> Integer.compare(o1.hashCode(), o2.hashCode()));
return tmp.hashCode();
}
public static void writeCommentList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( Comment item : list ) {
item.writeExternal( out );
}
}
public static List readCommentList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
Comment item = new CommentImpl();
item.readExternal( in );
list.add( item );
}
return list;
}
public static void writeAttachmentList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( Attachment item : list ) {
item.writeExternal( out );
}
}
public static List readAttachmentList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
Attachment item = new AttachmentImpl();
item.readExternal( in );
list.add( item );
}
return list;
}
public static void writeBooleanExpressionList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( BooleanExpression item : list ) {
item.writeExternal( out );
}
}
public static List readBooleanExpressionList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
BooleanExpression item = new BooleanExpressionImpl();
item.readExternal( in );
list.add( item );
}
return list;
}
public static void writeNotificationList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( Notification item : list ) {
// item.getNotificationType().toString() is never null
out.writeUTF( item.getNotificationType().toString() );
item.writeExternal( out );
}
}
public static List readNotificationList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
Notification item = null;
switch( NotificationType.valueOf( in.readUTF() ) ) {
case Default : {
item = new NotificationImpl();
break;
}
case Email : {
item = new EmailNotificationImpl();
break;
}
}
item.readExternal( in );
list.add( item );
}
return list;
}
public static void writeReassignmentList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( Reassignment item : list ) {
item.writeExternal( out );
}
}
public static List readReassignmentList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
Reassignment item = new ReassignmentImpl();
item.readExternal( in );
list.add( item );
}
return list;
}
public static void writeDeadlineList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( Deadline item : list ) {
item.writeExternal( out );
}
}
public static List readDeadlinesList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
Deadline item = new DeadlineImpl();
item.readExternal( in );
list.add( item );
}
return list;
}
public static void writeEscalationList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( Escalation item : list ) {
item.writeExternal( out );
}
}
public static List readEscalationList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
Escalation item = new EscalationImpl();
item.readExternal( in );
list.add( item );
}
return list;
}
public static void writeI18NTextList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( I18NText item : list ) {
item.writeExternal( out );
}
}
public static List readI18NTextList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
I18NText item = new I18NTextImpl();
item.readExternal( in );
list.add( item );
}
return list;
}
public static void writeOrganizationalEntityList(List list, ObjectOutput out) throws IOException {
out.writeInt( list.size() );
for( OrganizationalEntity item : list ) {
if ( item instanceof User ) {
out.writeShort( 0 );
} else {
out.writeShort( 1 );
}
item.writeExternal( out );
}
}
public static List readOrganizationalEntityList(ObjectInput in) throws IOException, ClassNotFoundException {
int size = in.readInt();
List list = new ArrayList(size);
for ( int i = 0; i < size; i++ ) {
short type = in.readShort();
if ( type == 0 ) {
User user = new UserImpl();
user.readExternal( in );
list.add( user );
} else {
Group group = new GroupImpl();
group.readExternal( in );
list.add( group );
}
}
return list;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy