Ignore:
Timestamp:
Mar 5, 2010, 9:20:33 AM (14 years ago)
Author:
gav
Message:

Fix asset copy failure due to to asset sub item non-unique names.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/services/AssetService.groovy

    r387 r429  
    159159            // Copy subItems from level 2 and bellow.
    160160            def copyAssetSubItem = { assetSubItemToCopy, parentItem ->
    161                 def assetSubItemInstance = new AssetSubItem(name: assetSubItemToCopy.name,
     161                def nextCount = AssetSubItem.count() + 1
     162                def baseName = assetSubItemToCopy.name.split('\\(id:')[0]
     163                def name = baseName +'(id:'+nextCount+')'
     164                def assetSubItemInstance = new AssetSubItem(name: name,
    162165                                                                                            description: assetSubItemToCopy.description,
    163166                                                                                            parentItem: parentItem)
    164167
    165168                if(assetSubItemInstance.hasErrors() || !assetSubItemInstance.save())
    166                     return fail(field:"subItems", code:"default.create.failure")
     169                    return fail(code:"asset.copy.subItem.create.failure")
    167170
    168171                def i = 0
     
    172175                    i++
    173176                    if(i > 100)
    174                         fail(code:"default.create.failure")
     177                        fail(code:"asset.copy.subItem.too.many.failure")
    175178                    // Stop if an error is flagged.
    176179                    if(result.error)
     
    181184            // Copy the 1st level of subItems.
    182185            def copyAssetSubItem1 = { assetSubItemToCopy ->
    183                 assetSubItemInstance1 = new AssetSubItem(name: assetSubItemToCopy.name,
     186                def nextCount = AssetSubItem.count() + 1
     187                def baseName = assetSubItemToCopy.name.split('\\(id:')[0]
     188                def name = baseName +'(id:'+nextCount+')'
     189                assetSubItemInstance1 = new AssetSubItem(name: name,
    184190                                                                                        description: assetSubItemToCopy.description,
    185191                                                                                        asset: result.assetInstance)
    186192
    187193                if(assetSubItemInstance1.hasErrors() || !assetSubItemInstance1.save())
    188                     return fail(field:"assetSubItems", code:"default.create.failure")
     194                    return fail(code:"asset.copy.subItem.create.failure")
    189195
    190196                result.assetInstance.addToAssetSubItems(assetSubItemInstance1)
     
    196202                    i++
    197203                    if(i > 100)
    198                         fail(code:"default.create.failure")
     204                        fail(code:"asset.copy.subItem.too.many.failure")
    199205                    // Stop if an error is flagged.
    200206                    if(result.error)
     
    217223                i++
    218224                if(i > 100)
    219                     fail(code:"default.create.failure")
     225                    fail(code:"asset.copy.subItem.too.many.failure")
    220226                // Stop if an error is flagged.
    221227                if(result.error)
Note: See TracChangeset for help on using the changeset viewer.