Changeset 17823

Show
Ignore:
Timestamp:
08/05/08 02:03:18 (3 weeks ago)
Author:
sjmittal
Message:

fix for 5795, deleting external added tasks too once the share is removed

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/core/src/net/project/crossspace/ExportedObject.java

    r16593 r17823  
    2222import java.util.List; 
    2323 
     24import org.apache.log4j.Logger; 
     25 
    2426import net.project.database.DBBean; 
    2527import net.project.database.DatabaseUtils; 
    2628import net.project.persistence.PersistenceException; 
     29import net.project.schedule.ScheduleEntry; 
     30import net.project.schedule.Task; 
    2731 
    2832/** 
     
    275279        DBBean db = new DBBean(); 
    276280        try { 
     281            db.setAutoCommit(false); 
     282             
    277283            db.executeQuery( 
    278284                "delete from pn_shareable_permissions where object_id in (" + 
     
    283289                DatabaseUtils.collectionToCSV(Arrays.asList(idList)) + ")" 
    284290            ); 
     291            String deleteShareSQL = "delete from pn_shared where imported_object_id = ?"; 
     292            ImportFinder finder = new ImportFinder(); 
     293            List sharingObjects = finder.findByExportedIDs(db, Arrays.asList(idList)); 
     294            db.prepareStatement(deleteShareSQL); 
     295            for (Iterator it = sharingObjects.iterator(); it.hasNext();) { 
     296                ImportedObject importedObject = (ImportedObject) it.next(); 
     297                Task task = new Task(); 
     298                task.setID(importedObject.getImportedObjectID()); 
     299                task.remove(); 
     300                //fix for bfd 5670 - remove this from the pn_shared table too 
     301                //note*: task.remove wont do that because we have not loaded the complete task here, just the reference 
     302                db.pstmt.setString(1, importedObject.getImportedObjectID()); 
     303                db.executePrepared(); 
     304            } 
     305             
     306            db.commit(); 
    285307        } catch (SQLException sqle) { 
     308            try { 
     309                db.rollback(); 
     310            } catch (SQLException e) { 
     311                Logger.getLogger(ScheduleEntry.class).debug("Unable to roll back task."); 
     312            } 
    286313            throw new PersistenceException("Unable to remove shares.", sqle); 
    287314        } finally {