Home | History | Annotate | Download | only in dmt-tools
      1 #!/bin/bash
      2 #====================================================================================================
      3 #
      4 # Script Name: convertMDF
      5 #
      6 # General Description: This script calls the necessary tools to convert between the old (text-based)
      7 #					  meta-data format and the new (binary) format.
      8 #
      9 #====================================================================================================
     10 # Copyright (C) 2014 The Android Open Source Project
     11 #
     12 # Licensed under the Apache License, Version 2.0 (the "License");
     13 # you may not use this file except in compliance with the License.
     14 # You may obtain a copy of the License at
     15 #
     16 #      http://www.apache.org/licenses/LICENSE-2.0
     17 #
     18 # Unless required by applicable law or agreed to in writing, software
     19 # distributed under the License is distributed on an "AS IS" BASIS,
     20 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     21 # See the License for the specific language governing permissions and
     22 # limitations under the License.
     23 #====================================================================================================
     24 
     25 # Do some checking on our environment - we need Java present
     26 
     27 if [ -z "$JAVA_HOME" ]
     28 then
     29   echo "Environment variable JAVA_HOME needs to be set!"
     30   exit 1
     31 fi
     32 
     33 # Define our root dir and make a dummy parm.txt
     34 
     35 BASEFILE=`basename $1 .mdf`
     36 ROOTDIR=./Dmt
     37 mkdir $ROOTDIR
     38 CURRPARM=$ROOTDIR/parm.txt
     39 cp -f /dev/null $CURRPARM
     40 echo "type:node" >> $CURRPARM
     41 echo "access:Get,Add,Replace,Delete" >> $CURRPARM
     42  
     43 # Make sure we have a Unix mdf file, not a DOS one!
     44 
     45 dos2unix $1 2> /dev/null
     46 
     47 # Begin building the Dmt file structure
     48 
     49 echo "Building tree from $1..."
     50 
     51 exec < $1
     52 
     53 while read line
     54 do
     55   # Check for comment lines
     56 
     57   echo $line | grep -E '^[[:space:]]*#' > /dev/null
     58   COMMENTLINE=$?
     59 
     60   # Check for parens
     61 
     62   if echo $line | grep '^\[' > /dev/null
     63   then
     64     # We've encountered a new node - begin node creation
     65 
     66     CURRDIR=`echo $line | sed "s/\[//g" | sed "s/\]//g" | sed "s/*/[]/g"`
     67     if [ "$CURRDIR" = "." ]
     68     then
     69       CURRDIR=$ROOTDIR
     70     else
     71       CURRDIR=$ROOTDIR$CURRDIR 
     72       #echo "Making dir: $CURRDIR"
     73       mkdir -p "$CURRDIR"
     74     fi
     75 
     76     CURRPARM=$CURRDIR/parm.txt
     77     cp -f /dev/null "$CURRPARM"
     78   elif [ "$line" != "" -a "$COMMENTLINE" -ne 0 ]
     79   then
     80     # Populate the parm.txt file with data
     81    
     82     echo "$line" >> "$CURRPARM"
     83   fi
     84 
     85 done
     86 
     87 # Call the DMTValidator to make sure we have good data
     88 
     89 echo "Validating DMT structure..."
     90 
     91 $JAVA_HOME/bin/java -classpath lib/GenTool.jar:lib/joda-time-1.1.jar:lib/jakarta-regexp-1.4.jar DMTValidator -d Dmt
     92 
     93 if [ $? -eq 1 ]
     94 then
     95   echo "Please fix the errors above before continuing..."
     96   echo "Cleaning up on abort..."
     97   rm -rf $ROOTDIR
     98   exit 1
     99 fi
    100 
    101 # Now call the Gen tool to build the binary MDF
    102 
    103 echo "Calling Gen tool to convert to binary MDF..."
    104 
    105 $JAVA_HOME/bin/java -classpath lib/GenTool.jar:lib/joda-time-1.1.jar:lib/jakarta-regexp-1.4.jar Gen -d Dmt -mdfconvert 2> /tmp/java.run.out.$$
    106 
    107 # Cleanup our Dmt directory
    108 
    109 echo "Cleaning up..."
    110 
    111 rm -rf $ROOTDIR
    112 mv -f root.bmdf $BASEFILE.bmdf
    113