⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 updateresult.java

📁 Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI
💻 JAVA
字号:
/*--------------------------------------------------------------------------*
 | Copyright (C) 2006 Christopher Kohlhaas                                  |
 |                                                                          |
 | This program is free software; you can redistribute it and/or modify     |
 | it under the terms of the GNU General Public License as published by the |
 | Free Software Foundation. A copy of the license has been included with   |
 | these distribution in the COPYING file, if not go to www.fsf.org         |
 |                                                                          |
 | As a special exception, you are granted the permissions to link this     |
 | program with every library, which license fulfills the Open Source       |
 | Definition as published by the Open Source Initiative (OSI).             |
 *--------------------------------------------------------------------------*/
package org.rapla.storage;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.rapla.entities.User;

public class UpdateResult 
{
    User user;
    List operations = new ArrayList();
    
    public UpdateResult(User user) {
        this.user = user;
    }
    
    public void addOperation(final Object operation) {
        if ( operation == null)
            throw new IllegalStateException( "Operation can't be null" );
        operations.add(operation);
    }
    
    public User getUser() {
        return user;
    }
    
    public Set getRemoveObjects() {
        return getObject( Remove.class);
    }

    public Set getChangeObjects() {
        return getObject( Change.class);
    }

    public Set getAddObjects() {
        return getObject( Add.class);
    }
    
    public Iterator getOperations( final Class operationClass) {
        Iterator operationsIt =  operations.iterator();
        if ( operationClass == null)
            throw new IllegalStateException( "OperationClass can't be null" );
        
        List list = new ArrayList();
        while ( operationsIt.hasNext() ) {
            Object obj = operationsIt.next();
            if ( operationClass.isInstance( obj ))
                list.add( obj );
        }
        
        return list.iterator();
    }

    protected Set getObject( final Class operationClass ) {
        Set set = new HashSet();
        if ( operationClass == null)
            throw new IllegalStateException( "OperationClass can't be null" );
        Iterator it= getOperations( operationClass);
        while (it.hasNext() ) {
            set.add( ((UpdateOperation)it.next() ).getCurrent());
        }
        return set;
    }
    
    
    static public class Add implements UpdateOperation {
        Object currentObj; // the actual represantation of the object
        Object newObj; // the object in the state when it was addes
        public Add(Object currentObj, Object newObj) {
            this.currentObj = currentObj;
            this.newObj = newObj;
        }
        public Object getCurrent() {
            return currentObj;
        }
        public Object getNew() {
            return newObj;
        }
    }

    static public class Remove implements UpdateOperation {
        Object currentObj; // the actual represantation of the object
        public Remove(Object currentObj) {
            this.currentObj = currentObj;
        }
        public Object getCurrent() {
            return currentObj;
        }
    }
    
    static public class Change implements UpdateOperation{
        Object currentObj; // the actual represantation of the object
        Object newObj; // the object in the state when it was changed
        Object oldObj; // the object in the state before it was changed
        public Change(Object currentObj, Object newObj, Object oldObj) {
            this.currentObj = currentObj;
            this.newObj = newObj;
            this.oldObj = oldObj;
        }
        public Object getCurrent() {
            return currentObj;
        }
        public Object getNew() {
            return newObj;
        }
        public Object getOld() {
            return oldObj;
        }
    }
}

interface UpdateOperation {
    public Object getCurrent();
}
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -