Skip to content
Snippets Groups Projects
finalScript.rb 4.20 KiB
def createCommunities file
  d = Dir[file + "*"].sort
  d.each{|subfile|
    meta = subfile + "/" + subfile.split('/')[-1] +".metadata"
    name = getName(meta)
    descript = getDescription(meta)
    community = $client.communities.create(
    Dspace::Community.new(
    {
      'name' => name,
      'introductoryText' =>description
      }
      )
    )
    createSubComs(subfile,community.id)
  }
end

def createSubComs file,id
  d = Dir[File.join(file , "*")]
  d.each{|subfile|
    if(subfile.split(".")[-1] != "metadata")
      meta = File.join(subfile , "/" , subfile.split('/')[-1] + ".metadata")
      name = getName(meta)
      descript = getDescription(meta)
      community = $client.communities.create_subcommunity(
      Dspace::community.new(
      {
        'name' = name,
        'introductoryText' => description
      }
      ),
      id: id
    )
    createSubComs(subfile,community.id)
  end
  }
end


def createCollections file
  d = Dir[File.join(file , "*")]
  d.each{|subfile|
    if(subfile.split(".")[-1] != "metadata")
      target = subfile
      fileName = target.split('/')[-1]
      target = fileName.split("_")
      if(target[0] == "COL")
        meta = file + "/" + file.split('/')[-1] +".metadata"
        name = getName(meta)
        descript = getDescription(meta)
        ##PARSE COMMUNITY AND CREATE createCollections
        collection =
        createItem(subfile,collection.id)
      end
      if(target[0] == "NUCLEO")
          createCollections(subfile)
      end
    end

  }
end

def createItem file,id
  d = Dir[File.join(file , "*")]
  d.each{|subfile|
    target = subfile
    fileName = target.split('/')[-1]
    target = fileName.split("_")
    if(target[0]=="ITEM")
      meta = subfile + "/" + subfile.split('/')[-1] + ".metadata"
      if(File.exist?(meta))
      metarray = getItemMeta(meta)
      title = metarray[0]
      metarray.delete_at(0)
      author = metarray[0]
      metarray.delete_at(0)
      description = metarray[-1]
      metarray.delete_at(-1)
      keywords = metarray
      else
      title = subfile.split('/')[-1].gsub('_',' ')
      author = ""
      description = ""
      keywords = title.split(' ')
      end
      item_metadata = Dspace::Item.new(
      'metadata' => [
        {'key' => "dc.title", 'value' => title},
        {'key' => "dc.creator", 'value' => author},
        {'key' => "dc.description", 'value' => description}
        ]
      )
      # p id
        item = $client.collections.create_item(item_metadata, id: id)

       g = Dir[subfile + "/*"].sort
       g.each{|subsubfile|
         if((subsubfile.split('.')[-1]=~/(?i)pdf|png/g))
           itemFile = File.new(subsubfile,'r')
           $client.items.add_bitstream(
           itemFile,
           id:item.id,
           name:subsubfile.split('/')[-1].gsub('_',' '),
           description:" "
         end
         )
       }
    end

  }
end

def getName meta
  f = File.open(meta, "r")
  i = 0
  f.each_line{|line|
    if(i == 1)
      return(line.extractMeta)
    end
  i += 1
  }
end

def getDescription meta
  f = File.open(meta, "r")
  i = 0
  f.each_line{|line|
    if(i == 2)
      return(line.extractMeta)
    end
  i += 1
  }
end

###################################################################################################
###################################################################################################
$LOAD_PATH.unshift('/home/starosta/c3sl/dspace-scripts/dspace-rest-client/lib')
require 'dspace'
url = "https://seppirhomologa.c3sl.ufpr.br:8443/rest"
login = "admin@seppirhomologa.com"
passw = "adminadmin"

#autenticacao
if(ARGV[0] == "debug")
$client = Dspace::Client.new(dspace_api: url, logger: Logger.new(STDOUT))
else
  $client = Dspace::Client.new(dspace_api: url)
end
if !$client.is_running?
  raise 'Can\'t connect to DSpace API.'
end
$client.login(login, passw)
###################################################################################################
###################################################################################################
rootComunidades = "/home/starosta/c3sl/dspaceFiles/SEPPIR_SoNucleos/"
rootColecoesItens = "/home/starosta/c3sl/dspaceFiles/BANCO-SEPPIR-20160624/"
#main
createCommunities(rootComunidades)
createCollections(rootColecoesItens)