| 684 | } |
| 685 | |
| 686 | int loadJoin(joinObj *join) |
| 687 | { |
| 688 | initJoin(join); |
| 689 | |
| 690 | for(;;) { |
| 691 | switch(msyylex()) { |
| 692 | case(CONNECTION): |
| 693 | if(getString(&join->connection) == MS_FAILURE) return(-1); |
| 694 | break; |
| 695 | case(CONNECTIONTYPE): |
| 696 | if((join->connectiontype = getSymbol(5, MS_DB_XBASE, MS_DB_MYSQL, MS_DB_ORACLE, MS_DB_POSTGRES, MS_DB_CSV)) == -1) return(-1); |
| 697 | break; |
| 698 | case(EOF): |
| 699 | msSetError(MS_EOFERR, NULL, "loadJoin()"); |
| 700 | return(-1); |
| 701 | case(END): |
| 702 | if((join->from == NULL) || (join->to == NULL) || (join->table == NULL)) { |
| 703 | msSetError(MS_EOFERR, "Join must define table, name, from and to properties.", "loadJoin()"); |
| 704 | return(-1); |
| 705 | } |
| 706 | if((join->type == MS_MULTIPLE) && ((join->template == NULL) || (join->name == NULL))) { |
| 707 | msSetError(MS_EOFERR, "One-to-many joins must define template and name properties.", "loadJoin()"); |
| 708 | return(-1); |
| 709 | } |
| 710 | return(0); |
| 711 | case(FOOTER): |
| 712 | if(getString(&join->footer) == MS_FAILURE) return(-1); |
| 713 | break; |
| 714 | case(FROM): |
| 715 | if(getString(&join->from) == MS_FAILURE) return(-1); |
| 716 | break; |
| 717 | case(HEADER): |
| 718 | if(getString(&join->header) == MS_FAILURE) return(-1); |
| 719 | break; |
| 720 | case(JOIN): |
| 721 | break; /* for string loads */ |
| 722 | case(NAME): |
| 723 | if(getString(&join->name) == MS_FAILURE) return(-1); |
| 724 | break; |
| 725 | case(TABLE): |
| 726 | if(getString(&join->table) == MS_FAILURE) return(-1); |
| 727 | break; |
| 728 | case(TEMPLATE): |
| 729 | if(getString(&join->template) == MS_FAILURE) return(-1); |
| 730 | break; |
| 731 | case(TO): |
| 732 | if(getString(&join->to) == MS_FAILURE) return(-1); |
| 733 | break; |
| 734 | case(TYPE): |
| 735 | if((join->type = getSymbol(2, MS_JOIN_ONE_TO_ONE, MS_JOIN_ONE_TO_MANY)) == -1) return(-1); |
| 736 | break; |
| 737 | default: |
| 738 | msSetError(MS_IDENTERR, "Parsing error near (%s):(line %d)", "loadJoin()", msyystring_buffer, msyylineno); |
| 739 | return(-1); |
| 740 | } |
| 741 | } /* next token */ |
| 742 | } |
| 743 |
no test coverage detected