|
|
1.1 ! root 1: /* ! 2: * Main Transaction object - what is stored in the IXRecordManagers ! 3: * ! 4: * Author: Kris Younger, NeXT Systems Engineering ! 5: * You may freely copy, distribute and reuse the code in this example. ! 6: * NeXT disclaims any warranty of any kind, expressed or implied, as to ! 7: * its fitness for any particular use. ! 8: */ ! 9: /* Mostly Generated By SetGet - version 1.0 - kyounger */ ! 10: ! 11: #import "Transaction.h" ! 12: #import <appkit/Application.h> ! 13: #import "MainDelegate.h" ! 14: #import <regex.h> ! 15: ! 16: @interface Transaction(PRIVATE) ! 17: - (id)setTSerial:(int)tS; ! 18: @end ! 19: ! 20: @implementation Transaction ! 21: - init ! 22: { ! 23: char number[16]; ! 24: ! 25: tSerial = [[NXApp delegate] consumeSerial]; ! 26: if (tSerial == 0) { ! 27: tSerial = -1; ! 28: }; ! 29: tDate = [[NXApp delegate] todaysDate]; ! 30: sprintf(number, "%d", tSerial); ! 31: tNumber = NXCopyStringBuffer(number); ! 32: return self; ! 33: } ! 34: ! 35: - free ! 36: { ! 37: if (tNumber != NULL) { free(tNumber); tNumber = NULL; } ! 38: if (tMemo != NULL) { free(tMemo); tMemo = NULL; } ! 39: if (tDebit != NULL) { free(tDebit); tDebit = NULL; } ! 40: if (tCredit != NULL) { free(tCredit); tCredit = NULL; } ! 41: if (tBalance != NULL) { free(tBalance); tBalance = NULL; } ! 42: return[super free]; ! 43: } ! 44: ! 45: - commit ! 46: { ! 47: int rmHandle; /* not used*/ ! 48: id storeHandle; ! 49: ! 50: if ((recordManager != NULL) && (recordManager != nil)) { ! 51: [(id)recordManager getBlock:&rmHandle andStore:&storeHandle]; ! 52: [storeHandle startTransaction]; ! 53: [recordManager replaceRecord:[self handle] with:self]; ! 54: [storeHandle commitTransaction]; ! 55: }; ! 56: return self; ! 57: } ! 58: ! 59: - (unsigned int)handle ! 60: { ! 61: return runTimeHandle; ! 62: } ! 63: ! 64: - (int)tSerial ! 65: { ! 66: return ((int)tSerial); ! 67: } ! 68: ! 69: /* this should be a private method. */ ! 70: - (id)setTSerial:(int)tS ! 71: { ! 72: tSerial = tS; ! 73: return self; ! 74: } ! 75: ! 76: - (const char *)tNumber ! 77: { ! 78: return ((const char *)tNumber); ! 79: } ! 80: ! 81: - (id)setTNumber:(const char *)tN ! 82: { ! 83: if (tNumber != NULL) free(tNumber); ! 84: tNumber = NXCopyStringBuffer(tN); ! 85: return self; ! 86: } ! 87: ! 88: - (const char *)tDate ! 89: { ! 90: return ((const char *)tDate); ! 91: } ! 92: ! 93: - (id)setTDate:(const char *)tD ! 94: { ! 95: tDate = NXUniqueString(tD); ! 96: return self; ! 97: } ! 98: ! 99: - (const char *)tMemo ! 100: { ! 101: return ((const char *)tMemo); ! 102: } ! 103: ! 104: - (id)setTMemo:(const char *)tM ! 105: { ! 106: if (tMemo != NULL) free(tMemo); ! 107: tMemo = NXCopyStringBuffer(tM); ! 108: return self; ! 109: } ! 110: ! 111: - (double)tAmount ! 112: { ! 113: return ((double)tAmount); ! 114: } ! 115: ! 116: - (id)setTAmount:(double)tA ! 117: { ! 118: char buf[256]; ! 119: ! 120: tAmount = tA; ! 121: if (tDebit != NULL) free(tDebit); ! 122: if (tCredit != NULL) free(tCredit); ! 123: if (tAmount >= 0) { ! 124: sprintf(buf, "%.2f", tAmount); ! 125: tCredit = NXCopyStringBuffer(buf); ! 126: tDebit = ""; ! 127: } else { ! 128: sprintf(buf, "%.2f", -tAmount); ! 129: tDebit = NXCopyStringBuffer(buf); ! 130: tCredit = ""; ! 131: }; ! 132: return self; ! 133: } ! 134: ! 135: - (const char *)tBalance ! 136: { ! 137: return (tBalance); ! 138: } ! 139: ! 140: - (id)setTBalance:(const char *)tB ! 141: { ! 142: double ttA; ! 143: ! 144: if (tBalance != NULL) free(tBalance); ! 145: tBalance = NXCopyStringBuffer(tB); ! 146: sscanf(tB, "%lf", &ttA); ! 147: tIBalance = ttA; ! 148: return self; ! 149: } ! 150: ! 151: - (const char *)tDebit ! 152: { ! 153: return tDebit; ! 154: } ! 155: ! 156: - (id)setTDebit:(const char *)tD ! 157: { ! 158: double ttA; ! 159: ! 160: sscanf(tD, "%lf", &ttA); ! 161: ttA = -ttA; ! 162: [self setTAmount:ttA]; ! 163: return self; ! 164: } ! 165: ! 166: - (const char *)tCredit ! 167: { ! 168: return tCredit; ! 169: } ! 170: ! 171: - (id)setTCredit:(const char *)tC ! 172: { ! 173: double ttA; ! 174: ! 175: sscanf(tC, "%lf", &ttA); ! 176: [self setTAmount:ttA]; ! 177: return self; ! 178: } ! 179: ! 180: ! 181: - source:aSource didReadRecord:(unsigned)record ! 182: { ! 183: recordManager = aSource; ! 184: if (![recordManager isMemberOf:[IXRecordManager class]]) ! 185: recordManager = [aSource delegate]; ! 186: ! 187: runTimeHandle = record; ! 188: return self; ! 189: } ! 190: ! 191: - source:aSource willWriteRecord:(unsigned)record ! 192: { ! 193: recordManager = nil; ! 194: if (runTimeHandle == 0) runTimeHandle = record; ! 195: return self; ! 196: } ! 197: ! 198: - (id)copy ! 199: { ! 200: return[super copy]; ! 201: } ! 202: ! 203: - (id)invertCopy ! 204: { ! 205: id foo; ! 206: ! 207: foo = [super copy]; ! 208: [foo setTAmount:-[foo tAmount]]; ! 209: return foo; ! 210: } ! 211: ! 212: - (id)becomeVoided:(id)v ! 213: { ! 214: char buf[64]; ! 215: ! 216: if (tNumber != NULL) free(tNumber); ! 217: tNumber = NXCopyStringBuffer("void"); ! 218: [self setTDate:[[NXApp delegate] todaysDate]]; ! 219: strcat(buf, "Void of #"); ! 220: strcat(buf,[v tNumber]); ! 221: if (tMemo != NULL) free(tMemo); ! 222: tMemo = NXCopyStringBuffer(buf); ! 223: [self setTAmount:-[v tAmount]]; ! 224: return self; ! 225: } ! 226: ! 227: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.