#!/bin/sh # # This file is part of SECONDO. # # Copyright (C) 2005, University in Hagen, Department of Computer Science, # Database Systems for New Applications. # # SECONDO 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; either version 2 of the License, or # (at your option) any later version. # # SECONDO is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SECONDO; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # # script for creating a relation containing filenames and contents # call this script via: createTextRel .. # example for storing all html in the home directory (incluve subfolders) into a relation: # createTextRelation htmlfiles $(find $HOME -name "*.html") > htmlfilesobj # after that, you can restore the relation in Secondo with: restore htmlfiles from htmlfilesobj # # for many files (more than the possible argumentlist of the current bash) # or for files with spaces in filenames use a pipe for creating the Relation # # example: find $HOME -name "*.txt" | createTextRelation txtrelation >txtRelationObj # # written, 2005, January - Th. Behr # you can simply changes this script for creating # relations of other file types # change the type here # examples are text, or binfile CONTENTTYPE="text" # # change the content here # allowed values ares text and file CONTENT="text" # # # change here the name of the content # avoid to use 'filename' as contentname # CONTENTNAME="TheText" ### end of configurable part #### if [ "$CONTENTNAME" = "Filename" ]; then echo "Error in configuration " >&2 echo "filename not allowed as name of content" >&2 exit 1 fi if [ "$CONTENT" = "text" ]; then CONTENTSTART="" CONTENTEND="" fi if [ "$CONTENT" = "file" ]; then CONTENTSTART="" CONTENTEND="" fi if [ -z "$CONTENTSTART" ]; then echo "Error in configuration, unknow content: $CONTENT" >&2 echo " Allowed values are text and file"; >&2 exit -1 fi USAGE="createTextRelation [--oldstyle] ObjectName [..] \n" if [ $1 = "--oldstyle" ]; then END=")())" shift else END="))" fi HEADER="(OBJECT $1 () (rel (tuple ( (Filename text)($CONTENTNAME $CONTENTTYPE ) ))) (" if [ "$#" = "0" ]; then echo "$USAGE" >&2 exit fi # case filenames specified echo -e "$HEADER" if [ "$#" -gt "1" ]; then C=1 for F in $* do if [ "$C" -gt 1 ]; then echo -e "( $F " echo -n -e " $CONTENTSTART" if [ "$CONTENT" = "text" ]; then cat "$F" else echo -n -e "$F" fi echo -e "$CONTENTEND"")\n" fi C=$(expr "$C" + 1) done else # no file specified, read from standardinput e.g. a pipe (use for long argumentlists) read F while [ "$F" ]; do echo -e "($F " echo -n -e "$CONTENTSTART" if [ "$CONTENT" = "text" ]; then cat "$F" else echo -n -e "$F" fi echo -n -e "$CONTENTEND"")\n" read F done fi echo "$END"